sys.dm_db_missing_index_columns

返回与缺少索引(不包括空间索引)的数据库表列有关的信息。sys.dm_db_missing_index_columns 是一个动态管理函数。

语法

sys.dm_db_missing_index_columns(index_handle)

参数

返回的表

列名

数据类型

说明

column_id

int

列的 ID。

column_name

sysname

表列的名称。

column_usage

varchar(20)

查询使用列的方式。可能的值有:

值说明
EQUALITY列提供一个表示相等的谓词,其形式为: table.column =constant_value
INEQUALITY列包含表示不等的谓词,例如,如下形式的谓词: table.column > constant_value “=”之外的任何比较运算符都表示不等。有关比较运算符的完整列表,请参阅比较运算符(数据库引擎)
INCLUDE列不用于谓词赋值,但用于其他原因,例如包含一个查询。

注释

当查询由查询优化器优化时,sys.dm_db_missing_index_columns 返回的信息将更新,因而不是持久化的。缺失索引信息只保留到重新启动 SQL Server 前。如果数据库管理员要在服务器回收后保留缺失索引信息,则应定期制作缺失索引信息的备份副本。

有关启用和禁用缺失索引信息集合的信息,请参阅关于缺失索引功能

sys.dm_db_missing_index_columns 动态管理函数的输出结果可供如下任何工具使用:该工具能够读取对应于 index_handle 的缺失索引信息,能够处理这些信息并将其转换为实现缺失索引的 CREATE INDEX DDL 语句。有关创建 DDL 语句的详细信息,请参阅使用缺失索引信息编写 CREATE INDEX 语句

有关此功能的限制的详细信息,请参阅缺失索引功能的限制

事务一致性

如果事务创建或删除了一个表,则包含有关已删除对象的缺失索引信息的行将从此动态管理对象中删除,以保持事务一致性。有关与缺失索引动态管理对象相关的事务一致性的详细信息,请参阅关于缺失索引功能

权限

必须授予用户 VIEW SERVER STATE 权限或任何隐含 VIEW SERVER STATE 权限的权限,以便查询此动态管理函数。

示例

以下示例对 Address 表运行查询,然后使用 sys.dm_db_missing_index_columns 动态管理视图运行查询以返回缺失索引的表列。

USE AdventureWorks;
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