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