2011-08-29 63 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

太棒了,謝謝亞倫。 –

相關問題