除了浪费数据库上的空间外,SQL Server上不必要的索引还可以减缓插入和更新操作的速度。缺乏数据库原则经验的开发人员有时倾向于创建对运行中的查询没有意义的表索引。
对于Server 2005/2008是否有一个通用的过程或工具来分析数据库工作负载,并提示在某个操作数据库上没有使用或不需要哪些索引?
谢谢!
发布于 2009-06-04 13:59:42
我在这里看到一个可爱的that脚本(http://blog.sqlauthority.com/2008/02/11/sql-server-2005-find-unused-indexes-of-current-database/)来显示应该在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,我要去看看我现在创建的一些生产数据库,看看这些数据是什么样子的。(微笑)
发布于 2009-06-04 15:09:33
在使用sys.dm_db_index_usage_stats时要记住以下几点:
希望这能有所帮助。
PS还有一件事是其他人读到的,想知道SQL Server 2000是否有类似的方法--不,我们(因为我当时是团队成员)只增加了2005年的功能。
发布于 2009-06-04 14:20:00
我们在SQLServerPedia上有一篇带有脚本的wiki文章,还有一个关于如何使用它的教程视频:
查找没有使用的索引:
http://sqlserverpedia.com/wiki/Find_索引_不_在……里面_使用
另一个要查找您应该添加的索引:
https://serverfault.com/questions/19672
复制相似问题