sys.dm_db_missing_index_columns (Transact-SQL)

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

适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。

语法

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 前。 如果数据库管理员要在服务器回收后保留缺失索引信息,则应定期制作缺失索引信息的备份副本。

事务一致性

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

权限

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

示例

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

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

请参阅

参考

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

sys.dm_db_missing_index_group_stats (Transact-SQL)