sys.dm_db_missing_index_details (Transact-SQL)

傳回有關遺漏索引 (不包含空間索引) 的詳細資訊。

資料行名稱

資料類型

描述

index_handle

int

識別特定的遺漏索引。此識別碼在伺服器中是唯一的。index_handle 是這份資料表的索引鍵。

database_id

smallint

識別具有遺漏索引之資料表的資料庫。

object_id

int

識別遺漏索引所在的資料表。

equality_columns

nvarchar(4000)

作為相等述詞之資料行的逗號分隔清單,述詞格式如下:

table.column =constant_value

inequality_columns

nvarchar(4000)

作為不相等述詞之資料行的逗號分隔清單,例如,格式如下的述詞:

table.column > constant_value

"=" 以外的其他任何比較運算子都可表示不相等。如需比較運算子的完整清單,請參閱<比較運算子 (Database Engine)>。

included_columns

nvarchar(4000)

可作為查詢所需涵蓋資料行之資料行的逗號分隔清單。如需有關涵蓋或內含資料行的詳細資訊,請參閱<建立內含資料行的索引>。

statement

nvarchar(4000)

遺漏索引所在之資料表的名稱。

備註

sys.dm_db_missing_index_details 傳回的資訊會在查詢最佳化工具進行最佳化查詢時更新,而不會一直保存。遺漏索引資訊只會保留到 SQL Server 重新啟動為止。如果資料庫管理員想要在伺服器回收之後保留遺漏索引資訊,應該定期製作該項資訊的備份副本。

若要判斷特定遺漏索引屬於哪些遺漏索引群組,您可以依據 index_handle 資料行,將該遺漏索引與 sys.dm_db_missing_index_details 等聯結,以便查詢 sys.dm_db_missing_index_groups 動態管理檢視。

如需有關啟用及停用遺漏索引資訊集合的資訊,請參閱<關於遺漏索引功能>。

如需有關這項功能之限制的資訊,請參閱<使用遺漏索引功能的限制>。

在 CREATE INDEX 陳述式中使用遺漏索引資訊

若要將 sys.dm_db_missing_index_details 傳回的資訊轉換成 CREATE INDEX 陳述式,應該將相等資料行放在不相等資料行前面,而這兩個資料行應該共同形成索引的索引鍵。您應該使用 INCLUDE 子句,將內含資料行加入 CREATE INDEX 陳述式中。若要決定相等資料行的有效次序,請依據其選擇性排列這些資料行:將選擇性最高的資料行列在最前面 (資料行清單的最左邊)。如需有關使用 sys.dm_db_missing_index_details 傳回之遺漏索引資訊撰寫 CREATE INDEX 陳述式的詳細資訊,請參閱<使用遺漏索引資訊撰寫 CREATE INDEX 陳述式>。

交易一致性

如果交易建立或卸除資料表,便會從這個動態管理物件中移除包含有關已卸除物件之遺漏索引資訊的資料列,以維持交易的一致性。如需有關與遺漏索引動態管理物件相關之交易一致性的詳細資訊,請參閱<關於遺漏索引功能>。

權限

使用者必須取得 VIEW SERVER STATE 權限或隱含 VIEW SERVER STATE 權限的任何權限,才能查詢此動態管理檢視。