Sql server 为什么我必须重新生成小于平均值的索引。碎片小于1%才能获得性能?

Sql server 为什么我必须重新生成小于平均值的索引。碎片小于1%才能获得性能?,sql-server,sql-server-performance,Sql Server,Sql Server Performance,为什么我必须重新生成小于平均值的索引。碎片小于1%才能获得性能 我有一个经常更新的表,但当我深入查看并检查平均碎片时,它甚至不到1%。当我重建该索引时,性能会自动得到改善 我在一个查询中将此表与两个以上的表合并 我想知道,根据MSDN,我们不应该对小于1%的包含索引的表执行任何操作,但如果不重建我的查询,则不会更快地给出结果。我还设置了FillFactor=75。碎片很少对性能有太大影响。重建索引还会更新与索引关联的统计信息,并使与对象关联的缓存计划无效 我部分同意你的观点,但在阅读中我的理解可

为什么我必须重新生成小于平均值的索引。碎片小于1%才能获得性能

我有一个经常更新的表,但当我深入查看并检查平均碎片时,它甚至不到1%。当我重建该索引时,性能会自动得到改善

我在一个查询中将此表与两个以上的表合并


我想知道,根据MSDN,我们不应该对小于1%的包含索引的表执行任何操作,但如果不重建我的查询,则不会更快地给出结果。我还设置了FillFactor=75。

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

我部分同意你的观点,但在阅读中我的理解可能会受到碎片化的影响。如果根据您的反馈,在性能方面存在罕见的影响,为什么我的查询在重建表的聚集索引后会变得更快!!!重建聚集索引后,我的查询变得更快更新的统计信息是最有可能的原因,但更新的查询计划也可以做到这一点。感谢David的观点,根据您的反馈,它让我可以从另一个方面/方式思考,我重新分析了整个查询和执行计划,我认为应该在该表上添加缺少的非聚集索引,最后我发现我的查询比以前的执行运行得更快。我知道,为执行速度较慢的所有查询添加非聚集索引是一个坏习惯。