sys.dm_db_missing_index_details
返回有关缺失索引的详细信息,不包括空间索引。
列名 |
数据类型 |
说明 |
---|---|---|
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 “=”之外的任何比较运算符都表示不等。有关比较运算符的完整列表,请参阅比较运算符(数据库引擎)。 |
included_columns |
nvarchar(4000) |
用于查询的涵盖列的逗号分隔列表。有关涵盖列或包含列的详细信息,请参阅创建带有包含列的索引。 |
statement |
nvarchar(4000) |
索引缺失的表的名称。 |
注释
由 sys.dm_db_missing_index_details 返回的信息会在查询优化器优化查询时更新,因而不是会持久化的。缺失索引信息只保留到重新启动 SQL Server 前。如果数据库管理员要在服务器回收后保留缺失索引信息,则应定期制作缺失索引信息的备份副本。
若要确定特定缺失索引所属的缺失索引组,可以查询 sys.dm_db_missing_index_groups 动态管理视图,方法是基于 index_handle 列将该视图与 sys.dm_db_missing_index_details 同等联接。
有关启用和禁用缺失索引信息集合的信息,请参阅关于缺失索引功能。
有关此功能限制的信息,请参阅缺失索引功能的限制。
在 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 权限的任何权限,才能查询此动态管理视图。