我正在閱讀索引以優化數據庫性能,並希望針對應用索引的各種數據庫情況收集最佳實踐。SQL Server - 維護索引的最佳實踐是什麼?
對於非平凡數量的表和行,採用完全非索引的數據庫,在確定將什麼類型的列應用於哪種類型以實現最佳性能時,您使用了哪些規則?哪些查詢分析技巧可以使用?
作爲開始我得到:(來自http://asptutorials.net/SQL-Server/tutorial-on-indexes/)
對於主要的或「報頭」的表如發票的表,使表的主鍵上的聚簇索引。
對於輔助或「詳細信息」表(如「invoice_row」),在將子記錄組合在一起的外鍵上生成聚集索引(在本例中爲「invoice_id」)。這是因爲invoice_row表中的大多數查詢將按照invoice_id順序而不是invoice_row_id順序進行。
對於所有表,請在表的每個外鍵上創建一個非聚集索引。此時不要擔心覆蓋索引。 考慮您將在桌上執行的選擇查詢。你將使用什麼樣的「where」和「order by」語句?在這些列上創建一個非聚集索引。
現在是時候開始對典型查詢進行計時並查找所有慢速查詢。如果您識別出特別慢的一個,請查看是否有方法可以將額外的非鍵列添加到索引,以便它成爲該查詢的覆蓋索引。
我們可以收集哪些其他「經驗法則」?使用哪些工具?
我不認爲這是一個重複的,至少不是http://stackoverflow.com/questions/107132/what-columns-generally-make-good-indexes的。 – 2009-09-03 21:25:33