2011-08-29 39 views

回答

4

索引中的叶级别数据很容易根据插入的性质以及SQL Server在插入,更新(或删除期间将其删除)期间将数据放置在磁盘上的位置碎片化。它并不总是能够在确切的物理时隙中放置特定的值,并且这种碎片会对搜索/扫描操作产生严重影响。

重组尝试将索引的叶级别按逻辑顺序放回已分配给索引的页面中。

重建基本上创建了索引的全新副本,并且在减少碎片方面效率更高 - 但这需要花费时间和磁盘空间。为了执行重建,您可能需要数据库中的可用空间,从现有索引大小的1.2倍到1.5倍。这与CREATE INDEX ... WITH DROP_EXISTING类似。

在线重建意味着在创建新索引时,旧索引仍可供其他用户查询。此功能在所有版本中均不可用(仅限Enterprise +)。

使用哪种方法的选择取决于表的大小,碎片级别,减少碎片的潜在好处以及磁盘上的可用空间(如果您使用的是附加决策,则使用联机一定版本)。奥拉Hallengren和Michelle Ufford具有相当强大的解决方案,帮助做出这些决策为您提供:

http://ola.hallengren.com/

http://sqlfool.com/2011/06/index-defrag-script-v4-1/

有关重组的一个好处是,如果它的时间过长,你可以取消它,你不会失去已经完成的任何工作。如果你取消重建,它会回滚所有的东西。

+0

太棒了,谢谢亚伦。 –

相关问题