sys.dm_db_missing_index_columns(Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Microsoft Fabric 中的 SQL 資料庫

傳回遺漏索引之資料庫數據表數據行的相關信息。 sys.dm_db_missing_index_columns 是動態管理功能。

Syntax

sys.dm_db_missing_index_columns(index_handle)  

引數

index_handle
可唯一識別遺漏索引的整數。 它可以從下列動態管理物件取得:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups(Transact-SQL)

傳回的資料表

欄位名稱 資料類型 描述
column_id int 數據行的識別碼。
column_name sysname 數據表數據行的名稱。
column_usage varchar(20) 查詢如何使用數據行。 可能的值及其描述如下:

EQUALITY:數據行有助於表示相等的述詞,其形式如下:
表格。欄位 = constant_value

不相等:數據行有助於表示不相等的述詞,例如:table.column constant_value的述詞。> “=” 以外的任何比較運算符都表示不相等。

INCLUDE:數據行不會用來評估述詞,而是用於另一個原因,例如,用來涵蓋查詢。

備註

當查詢優化器優化且不會保存時,所傳 sys.dm_db_missing_index_columns 回的資訊會更新。 只有在資料庫引擎重新啟動之前,才會保留遺漏的索引資訊。 如果資料庫管理員想要在伺服器回收之後保留,資料庫管理員應該定期製作遺漏索引資訊的備份複本。 使用 sqlserver_start_time 中的 資料行來找出資料庫引擎上次啟動的時間。

交易一致性

如果交易建立或卸除數據表,則會從這個動態管理物件中移除包含遺漏索引信息的數據列,以保留交易一致性。

許可

使用者必須獲得 VIEW SERVER STATE 權限,或任何暗示 VIEW SERVER STATE 權限的權限,才能查詢此動態管理函式。

SQL Server 2022 和更新版本的許可權

需要 VIEW 伺服器上的 SERVER PERFORMANCE STATE 權限。

Examples

下列範例會針對 Address 數據表執行查詢,然後使用動態管理檢視執行查詢 sys.dm_db_missing_index_columns ,以傳回遺漏索引的數據表數據行。

USE AdventureWorks2022;  
GO  
SELECT City, StateProvinceID, PostalCode  
FROM Person.Address  
WHERE StateProvinceID = 9;  
GO  
SELECT mig.*, statement AS table_name,  
    column_id, column_name, column_usage  
FROM sys.dm_db_missing_index_details AS mid  
CROSS APPLY sys.dm_db_missing_index_columns (mid.index_handle)  
INNER JOIN sys.dm_db_missing_index_groups AS mig ON mig.index_handle = mid.index_handle  
ORDER BY mig.index_group_handle, mig.index_handle, column_id;  
GO  

遺漏的索引建議應該盡可能與彼此結合,以及目前資料庫中的現有索引。 瞭解如何使用遺漏索引建議,在微調非叢集索引中套用這些建議。

下一步

在下列文章中深入瞭解遺漏的索引功能: