關於SQL Server 2008的缺失索引功能

iSQlServer發表於2008-11-26

缺失索引功能使用動態管理物件和顯示計劃,提供有關可增強 SQL Server 查詢效能的缺失索引的資訊。

 元件
當查詢優化器生成查詢計劃時,它將分析什麼是用於特定篩選條件的最佳索引。如果不存在最佳索引,則查詢優化器將生成非最佳查詢計劃,但仍會儲存有關這些索引的資訊。使用缺失索引功能,您可以訪問有關這些索引的資訊以決定是否實現它們。

缺失索引功能包含下列元件:

一組動態管理物件,可對其進行查詢以返回有關缺失索引的資訊。

XML 顯示計劃中的 MissingIndexes 元素,將查詢優化器認為缺失的索引與索引缺失的查詢相關聯。

缺失索引功能元件將在下列部分中進行詳細探討。

動態管理物件
在 SQL Server 上執行標準的工作負荷後,通過查詢下表中列出的動態管理物件可檢索到有關缺失索引的資訊。這些動態管理物件儲存在 master 資料庫中。

動態管理物件  返回的資訊 
sys.dm_db_missing_index_group_stats
 返回有關缺失索引組的摘要資訊,例如,通過實現特定的缺失索引組所獲取的效能改善。
 
sys.dm_db_missing_index_groups
 返回有關特定缺失索引組的資訊,例如組識別符號和該組包含的所有缺失索引的識別符號。
 
sys.dm_db_missing_index_details
 返回有關缺失索引的詳細資訊,例如,返回缺失索引的表的名稱和識別符號,以及應組成缺失索引的列和列型別。
 
sys.dm_db_missing_index_columns
 返回有關缺失索引的資料庫表列的資訊。
 

您可以使用這些動態管理物件返回的資訊以及使用此資訊的工具或指令碼,生成將實現缺失索引的 CREATE INDEX DDL 語句。

事務一致性
對這些動態管理物件中的行所做的單獨修改在事務上是不一致的。也就是,如果中止查詢或回滾封閉的事務,則包含有關此查詢缺失索引資訊的行仍然存在。

僅支援整個事務。不支援檢查點和部分回滾。

注意:
當表的後設資料發生更改時,有關此表的所有缺失索引資訊都將從這些動態管理物件中刪除。例如,當在表中新增列或刪除列,或為表列建立索引時,表的後設資料都會發生更改。
 


XML 顯示計劃的 MissingIndexes 元素
若要將查詢與動態管理物件結果中標識的缺失索引相關聯,可檢視 XML 顯示計劃中的 MissingIndexes 元素。下面的示例闡釋了 MissingIndexes 元素:

 

 

  

   

    

     

       

       

        

         

          

         

         

          

         

         

          

          

          

         

        

       

      

MissingIndexes 元素包含的資訊有助於確定哪一種索引會提高 StmtSimple 元素中描述的特定查詢的效能,哪一種索引自身包含 Transact-SQL 語句。然後,可使用針對此元素返回的資訊編寫 CREATE INDEX DDL 語句。

 啟用和禁用缺失索引功能
預設情況下,缺失索引功能處於啟用狀態。沒有提供任何控制元件來開啟或關閉此功能,也沒有提供任何控制元件來重置查詢動態管理物件時返回的任何表。重新啟動 SQL Server 時,將刪除所有缺失索引資訊。

只有將 -x 引數用於 sqlservr 命令提示實用工具啟動 SQL Server 例項時,才能禁用此功能。有關詳細資訊,請參閱 sqlservr 應用程式。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-503353/,如需轉載,請註明出處,否則將追究法律責任。

相關文章