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
遺漏的索引建議應該盡可能與彼此結合,以及目前資料庫中的現有索引。 瞭解如何使用遺漏索引建議 ,在微調非叢集索引中 套用這些建議。
下一步
在下列文章中深入瞭解遺漏的索引功能:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應