Sql-Server

如何知道何時/如果我有太多索引?

  • March 27, 2020

時不時地執行 Microsoft SQL Server Profiler,它建議我創建一堆新的索引和統計資訊(“…97% 估計改進…”)。

據我了解,每個添加的索引都可以使 SQLSELECT查詢更快,但也可以使UPDATEorINSERT查詢變慢,因為必須調整索引。

我想知道的是,我什麼時候有“太多”的索引/統計資訊?

也許對此沒有明確的答案,但有一些經驗法則。

您的負載配置文件是回答這個問題的最重要因素。

  • 如果您的負載是讀取密集型的,您希望索引能夠滿足最繁重或最頻繁的查詢。
  • 如果您的負載是寫密集型的,請仔細索引。例如,滿足查找 UPDATE 需求的索引以及您的一兩個最昂貴的 SELECT。
  • 如果您的負載是 OLAP 負載,請謹慎使用索引,因為無論如何您都將掃描目標表。

你怎麼知道你有太多的索引?

  • 當您可以看到其中一些未被任何查詢使用時。
  • 頻繁的 DELETE、UPDATE 或 INSERT 顯示了一個查詢計劃,該計劃涉及多個昂貴的索引更改(即非聚集索引insertupdatedelete)。使用您的判斷來確定對這些 DML 語句的懲罰是否值得您從必須更新的索引中獲得的收益。

引用自:https://dba.stackexchange.com/questions/5525