【问题标题】:Why should I have to rebuild index which is having less than Avg. fragmentation is less than 1% to get performance?为什么我必须重建低于 Avg 的索引。碎片小于 1% 以获得性能?
【发布时间】:2017-08-13 19:05:10
【问题描述】:

为什么我必须重建低于 Avg 的索引。碎片化小于 1% 才能获得性能?

我有一张表,过去经常更新,但是当我深入查看并检查平均值时。碎片化,使用到甚至小于 1%。当我重建该索引时,自动性能得到了改进。

我在单个查询中加入了超过 2 个表的表。

我想知道,根据 MSDN,我们不应该对少于 1% 的索引包含表做任何事情,但是如果不重建我的查询并不能更快地给我结果。我还设置了 FillFactor= 75。

【问题讨论】:

    标签: sql-server sql-server-performance


    【解决方案1】:

    碎片很少会影响性能。重建索引会更新与索引关联的统计信息并使与对象关联的缓存计划无效。

    【讨论】:

    • 我部分同意你的观点,但阅读MSDN blog,我的理解可能会受到碎片化的影响。如果根据您的反馈对性能有罕见的影响,为什么在重建我的表的聚集索引后我的查询变得更快!!!
    • "我的查询在重建聚集索引后变得更快"更新的统计信息是最可能的原因,但更新的查询计划也可以做到这一点。
    • 感谢 David 的观点,它给了我一种思考其他方面/方式的方法,根据您的反馈,我重新分析了整个查询和执行计划,我认为我应该添加缺少的非集群索引该表,最后我发现我的查询比以前的执行速度更快。我知道为所有执行速度慢的查询添加非聚集索引是一个坏习惯。
    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多