2008-11-20 59 views
3

我正在使用SQL Server 2005和動態管理視圖sys.dm_db_missing_index_details。它繼續告訴我Table1確實需要ColumnX和ColumnY的索引,但該索引已經存在!我甚至放棄並重新創建了幾次,但無濟於事。爲什麼SQL Server 2005動態管理視圖在缺失索引時報告缺失的索引?

更多細節:視圖列出equality_columns下的Column1。列2被inequality_columns下上市,所以我創建了索引:

create index IndexA on Table1 (Column1 asc, Column2 asc) 

這不正是sys.dm_db_missing_index_details告訴我我需要的指數?

回答

5

隨機想法:如果其中一列更好地聲明爲「DESC」會怎麼樣?

這對於ORDER BY子句非常有用,我看到邏輯IO減少了一半。

+0

我想這想法不是那麼的隨意,因爲它解決了這個問題的侷限性好微軟的文章。列在inequality_columns下的Column2需要按降序排序:在Table1上創建索引IndexA(Column1 asc,Column2 desc) – Charles 2009-05-28 20:01:49

-1

如果您已經降到&創建索引,sp_update_stats應該不會影響到它(問題不在於統計)

也許是因爲DMV數據的陳舊已經 是否實際執行計劃建議中缺少指數SSMS呢?

Books Online

通過 sys.dm_db_missing_index_details返回的信息是 當查詢由 優化查詢優化器更新,並且不 持續。缺少索引信息 僅保留,直到SQL Server重新啓動 。數據庫管理員 應該定期備份 丟失的索引信息,如果他們想要在服務器 回收後保留 。

要確定哪些缺失索引​​ 組特定的缺失索引是 一部分,您可以通過在index_handle列基於 sys.dm_db_missing_index_details equijoining它查詢 sys.dm_db_missing_index_groups動態 管理視圖。