Sql-Server

索引清理/使用幫助

  • January 8, 2016

我的問題是:執行時sp_blitzindex,我收到很多這兩個警告/建議:

索引囤積者:未使用的 NC 索引

Feature-Phobic Indexes:潛在的過濾索引(基於列名)

使用index hoarder,這些是我針對 FK 列建構的索引。我認為在我讀到的某個地方是一個好主意。

使用feature-phobic,我設置了使用這些 cols 的索引(索引定義中的 where 子句),但是在使用 時sp_blitzindex,我得到了很多關於不使用該功能的索引的建議。(它要麼將位欄位卡在包含或索引本身中。)

您對是否將索引保留在 FK 上有何想法?而且,您認為我在哪裡可以獲得最大的索引(您的 blitzindex 的功能或結果?)

現在,這被用於具有一些用於搜尋的平面表的 OLTP 系統。

索引囤積者告訴你,歷史上這個索引沒有被使用。因此,維護索引是 CPU、I/O 和儲存方面的成本,但您不會從這些索引中獲得任何性能優勢。

為索引考慮外鍵的一般策略是好的一般計劃,但很可能應該刪除未使用的索引。

這是一個關於自己檢查索引的連結: http ://www.mssqltips.com/sqlservertutorial/256/discovering-unused-indexes/

該文章中的一段程式碼顯示了一些查詢詳細資訊:

SELECT OBJECT_NAME(S.[OBJECT_ID]) AS [OBJECT NAME], 
      I.[NAME] AS [INDEX NAME], 
      USER_SEEKS, 
      USER_SCANS, 
      USER_LOOKUPS, 
      USER_UPDATES 
FROM   SYS.DM_DB_INDEX_USAGE_STATS AS S 
      INNER JOIN SYS.INDEXES AS I ON I.[OBJECT_ID] = S.[OBJECT_ID] AND I.INDEX_ID = S.INDEX_ID 
WHERE  OBJECTPROPERTY(S.[OBJECT_ID],'IsUserTable') = 1
      AND S.database_id = DB_ID()

考慮刪除未使用的索引。如果您有一份真正使用索引的年度工作,請考慮僅為該工作創建它。

Feature-Phobic Indexes表明過濾索引可能比標準索引更有價值。過濾索引將僅涵蓋滿足您的搜尋條件的行。

這有點推測,但建議是嘗試一些過濾索引。如果它們對您不起作用,您可以再次刪除它們。

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