SQL Server - 碎片索引可能比没有索引更糟糕

时间:2014-05-21 09:07:18

标签: sql-server

如果我的索引是80%碎片并且在连接中使用,那么总体性能是否会比该索引不存在时更差?如果是这样,为什么?

1 个答案:

答案 0 :(得分:1)

您的问题过于模糊,无法始终如一地回答,甚至无法了解您的实际情况,但请考虑一下:

碎片索引意味着与特定查询所需的磁盘活动量相比,您将拥有大量实际磁盘活动。

看看DBCC SHOWCONTIG 在其他有用的信息中,它显示了扫描密度的数字。命中率非常低"这可能意味着你需要使用适当维护的索引来进行更多的IO。这甚至可能超过执行表扫描所需的IO数量,但这一切都取决于对象的大小和数据访问模式。

一个维护不良(=高度分散)索引会让你受到双倍伤害的区域是它会影响插入,更新和选择的性能。 考虑到这一点,ETL流程在处理大批量信息之前删除索引并重新创建索引是一种非常常见的做法。与此同时,他们只会损害写入性能,而且碎片太多而无法帮助查找。

除此之外:索引维护很容易。我建议部署Ola Hallengren的索引维护解决方案,不再担心。