为什么索引REBUILD不能减少索引碎片化?


Answers:


39

如果索引非常小(我相信少于8页),它将使用混合范围。因此,由于住房范围将包含来自多个索引的页面,因此似乎仍然有碎片。

因此,在这样一个很小的索引中通常可以忽略碎片的事实中,您实际上只应使用一定的页面阈值来重建索引。最佳实践是重建至少1000页的碎片索引。


34

对于非常大的索引也可能发生这种情况。

我在一个约有7亿行的表上有一些索引,这些索引不能在30%以下进行碎片整理。问题是数据库内部没有足够的连续可用空间来连续排列索引。

要解决不会进行碎片整理的非常大的索引,BEST解决方案是预先调整新数据库的大小并将所有对象移至该数据库,然后在该数据库中重新创建索引。


1

我一直在为此苦苦挣扎,就像JNK I一样,尽管问题仍然是磁盘上的可用空间和物理碎片。但是,您在SSD SAN上如何处理?

我现在发现只包含index_level = 0可能是一个好主意。这是在Ola Hallengren的脚本中完成的。

另一个改进是

 REBUILD With (maxdop = 1)

这样,您可以确保最大程度的改进。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.