sys.dm_db_missing_index_columns (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

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

語法

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:資料行有助於表示相等的述詞,其形式如下:
table.column = constant_value

不相等:資料行有助於表示不相等的述詞,例如:table.column constant_value的 述詞 > 「=」 以外的任何比較運算子都表示不相等。

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

備註

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

交易一致性

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

權限

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

SQL Server 2022 和更新版本的權限

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

範例

下列範例會針對 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  

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

下一步

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