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)
参数
index_handle
唯一地标识缺失索引的整数。 它可以从下列动态管理对象中获得:
返回的表
列名 |
数据类型 |
说明 |
||||||||
---|---|---|---|---|---|---|---|---|---|---|
column_id |
int |
列的 ID。 |
||||||||
column_name |
sysname |
表列的名称。 |
||||||||
column_usage |
varchar(20) |
查询使用列的方式。 可能的值有:
|
注释
当查询由查询优化器优化时,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)