sys.dm_db_missing_index_group_stats (Transact-SQL)
傳回有關遺漏索引 (不包含空間索引) 群組的摘要資訊。
資料行名稱 |
資料類型 |
說明 |
---|---|---|
group_handle |
int |
識別一組遺漏的索引。 這個識別碼在伺服器中是唯一的。 其他資料行提供有關群組中被視為遺漏之索引的所有查詢資訊。 一個索引群組僅能包含一個索引。 |
unique_compiles |
bigint |
由於此遺漏索引群組而獲益之編譯與重新編譯的次數。 許多不同查詢的編譯和重新編譯都可以構成這個資料行的值。 |
user_seeks |
bigint |
群組中建議索引適用之使用者查詢所造成的搜尋次數。 |
user_scans |
bigint |
群組中建議索引適用之使用者查詢所造成的掃描次數。 |
last_user_seek |
datetime |
群組中建議索引適用之使用者查詢所造成的上次搜尋日期和時間。 |
last_user_scan |
datetime |
群組中建議索引適用之使用者查詢所造成的上次掃描日期和時間。 |
avg_total_user_cost |
float |
可依據群組中的索引降低之使用者查詢的平均成本。 |
avg_user_impact |
float |
實作此遺漏索引群組時,使用者查詢可能獲得的平均效益百分比。 這個值表示如果實作此遺漏索引群組,平均查詢成本將會依此百分比降低。 |
system_seeks |
bigint |
群組中建議索引適用之系統查詢 (例如 Auto Stats 查詢) 所造成的搜尋次數。 如需詳細資訊,請參閱<Auto Stats 事件類別>。 |
system_scans |
bigint |
群組中建議索引適用之系統查詢所造成的掃描次數。 |
last_system_seek |
datetime |
群組中建議索引適用之系統查詢所造成的上次系統搜尋日期和時間。 |
last_system_scan |
datetime |
群組中建議索引適用之系統查詢所造成的上次系統掃描日期和時間。 |
avg_total_system_cost |
float |
可依據群組中的索引降低之系統查詢的平均成本。 |
avg_system_impact |
float |
實作此遺漏索引群組時,系統查詢可能獲得的平均效益百分比。 這個值表示如果實作此遺漏索引群組,平均查詢成本將會依此百分比降低。 |
備註
sys.dm_db_missing_index_group_stats 傳回的資訊會在每次執行查詢時更新,而非每次編譯或重新編譯查詢時更新。 使用狀況統計資料不會一直保存,只會保留到 SQL Server 重新啟動為止。 如果資料庫管理員想要在伺服器回收之後保留使用狀況統計資料,應該定期製作遺漏索引資訊的備份副本。
權限
若要查詢此動態管理檢視,使用者必須取得 VIEW SERVER STATE 權限或隱含 VIEW SERVER STATE 權限的任何權限。
範例
下列範例說明如何使用 sys.dm_db_missing_index_group_stats 動態管理檢視。
A.尋找改善使用者查詢之預期效果最高的 10 個遺漏索引
下列查詢決定哪 10 個遺漏查詢對使用者查詢產生的預期累計改善效果最高 (以遞減順序排列)。
SELECT TOP 10 *
FROM sys.dm_db_missing_index_group_stats
ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;
B.尋找個別遺漏索引及其特定遺漏索引群組的資料行詳細資料
下列查詢決定哪些遺漏索引構成特定的遺漏索引群組,並顯示其資料行詳細資料。 為了符合這個範例的目的,遺漏索引群組控制代碼為 24。
SELECT migs.group_handle, mid.*
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig
ON (migs.group_handle = mig.index_group_handle)
INNER JOIN sys.dm_db_missing_index_details AS mid
ON (mig.index_handle = mid.index_handle)
WHERE migs.group_handle = 24;
此查詢提供遺漏索引之資料庫、結構描述和資料表的名稱。 它也提供索引鍵應該使用的資料行名稱。 撰寫 CREATE INDEX DDL 陳述式以實作遺漏的索引時,請在 CREATE INDEX 陳述式的 ON <table_name> 子句中,先列出相等資料行,接著再列出不相等資料行。 您應該將內含資料行列在 CREATE INDEX 陳述式的 INCLUDE 子句中。 若要決定相等資料行的有效次序,請依據其選擇性排列這些資料行,將選擇性最高的資料行列在最前面 (資料行清單的最左邊)。
請參閱
參考
sys.dm_db_missing_index_columns (Transact-SQL)
sys.dm_db_missing_index_details (Transact-SQL)