除了在数据库上浪费空间之外,sql Server上不必要的索引会降低插入和更新操作的速度.缺乏数据库原则经验的开发人员有时会创建对正在运行的查询没有意义的表索引.
是否有一个用于sql Server 2005/2008的通用过程或工具,用于分析数据库工作负载并提供哪些索引从未在某个操作数据库中使用或不必要?
谢谢!
解决方法
我在这里看到一个可爱的小T-sql脚本(
http://blog.sqlauthority.com/2008/02/11/sql-server-2005-find-unused-indexes-of-current-database/)来显示应该在sql Server 2005上运行的未使用的索引.另一个
http://aspadvice.com/blogs/ssmith/archive/2008/03/31/Find-Unused-SQL-2005-Indexes-for-Current-DB.aspx也在这里.
看起来dm_db_index_usage_stats是所有这一切的关键.很简约! (参见http://msdn.microsoft.com/en-us/library/ms188755.aspx我将不得不去看看我现在创建的一些生产数据库,看看这些统计数据是什么样的.(笑)
编辑:这里有一些非常好的addt’l背景:http://blogs.msdn.com/craigfr/archive/2008/10/30/what-is-the-difference-between-sys-dm-db-index-usage-stats-and-sys-dm-db-index-operational-stats.aspx