为什么SQL Server 2005动态管理视图报告缺少索引?

时间:2008-11-20 14:50:48

标签: sql-server-2005

我正在使用SQL Server 2005和动态管理视图sys.dm_db_missing_index_details。它继续告诉我Table1确实需要ColumnX和ColumnY的索引,但该索引已经存在!我甚至已经放弃并重新创建它几次无济于事。

更多细节:该视图列出了equality_columns下的Column1。 Column2列在inequality_columns下,因此我创建的索引是:

create index IndexA on Table1 (Column1 asc, Column2 asc)

这不正是指数sys.dm_db_missing_index_details告诉我需要吗?

3 个答案:

答案 0 :(得分:5)

随机思考:如果其中一列被更好地声明为“DESC”怎么办?

这对ORDER BY子句很有用,我看到逻辑IO减少了一半。

答案 1 :(得分:0)

虽然这是一篇相当古老的文章,但我在此发现了一篇有用的文章http://www.simple-talk.com/sql/database-administration/fine-tuning-your-database-design-in-sql-2005/,其中引用了一篇关于DMV限制的微软文章http://msdn.microsoft.com/en-us/library/ms345485.aspx

答案 2 :(得分:-1)

如果你已经掉线&创建了索引,sp_update_stats不应该影响它(问题不在于统计信息)

也许是因为DMV数据已经过时了 实际执行计划是否也建议SSMS中的缺失指数?

来自Books Online

  

返回的信息   sys.dm_db_missing_index_details是   在优化查询时更新   查询优化器,而不是   持续存在。缺少索引信息   只保留到SQL Server   重新启动。数据管理员   应定期制作备份副本   丢失的索引信息if   他们希望在服务器之后保留它   回收

     

确定哪个缺失索引   组特定的缺失索引是   部分,你可以查询   sys.dm_db_missing_index_groups动态   管理视图通过等同于它   sys.dm_db_missing_index_details基于   在index_handle列上。