sys.dm_db_missing_index_group_stats

返回缺失索引组的摘要信息,不包括空间索引。

列名

数据类型

说明

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 事件类

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. 查找十个具有最高用户查询预期提高的缺失索引

下面的查询确定了将生成最高预期累计提高的十个缺失索引,按降序排列。

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 子句中列出包含列。若要确定相等列的有效顺序,请基于其选择性排序,首先列出选择性最强的列(列列表中的最左侧)。

有关使用由这些动态管理对象返回的信息编写 CREATE INDEX DDL 语句的详细信息,请参阅使用缺失索引信息编写 CREATE INDEX 语句