sys.dm_db_missing_index_columns (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure 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
遺漏的索引建議應該盡可能與彼此結合,以及目前資料庫中的現有索引。 瞭解如何使用遺漏索引建議,在微調非叢集索引中套用這些建議。
下一步
在下列文章中深入瞭解遺漏的索引功能: