SQL Server中REBUILD ONLINE和REORGANIZE索引之間的區別是什麼?SQL Server中REBUILD WITH ONLINE和REORGANIZE索引之間的區別是什麼?
1
A
回答
4
索引中的葉級別數據很容易根據插入的性質以及SQL Server在插入,更新(或刪除期間將其刪除)期間將數據放置在磁盤上的位置碎片化。它並不總是能夠在確切的物理時隙中放置特定的值,並且這種碎片會對搜索/掃描操作產生嚴重影響。
重組嘗試將索引的葉級別按邏輯順序放回已分配給索引的頁面中。
重建基本上創建了索引的全新副本,並且在減少碎片方面效率更高 - 但這需要花費時間和磁盤空間。爲了執行重建,您可能需要數據庫中的可用空間,從現有索引大小的1.2倍到1.5倍。這與CREATE INDEX ... WITH DROP_EXISTING
類似。
在線重建意味着在創建新索引時,舊索引仍可供其他用戶查詢。此功能在所有版本中均不可用(僅限Enterprise +)。
使用哪種方法的選擇取決於表的大小,碎片級別,減少碎片的潛在好處以及磁盤上的可用空間(如果您使用的是附加決策,則使用聯機一定版本)。奧拉Hallengren和Michelle Ufford具有相當強大的解決方案,幫助做出這些決策爲您提供:
http://sqlfool.com/2011/06/index-defrag-script-v4-1/
有關重組的一個好處是,如果它的時間過長,你可以取消它,你不會失去已經完成的任何工作。如果你取消重建,它會回滾所有的東西。
相關問題
- 1. SQL Server中的OFFLINE和ONLINE索引重建有什麼區別?
- 2. SQL Server中這兩個索引之間的區別是什麼?
- 3. 表索引和視圖索引之間的區別是什麼?
- 4. SQL Server中主鍵和唯一索引之間的區別
- 5. Cassandra中的二級索引和倒排索引之間的區別是什麼?
- 6. ++和:haskell之間的區別是什麼?
- 7. 複合非聚集索引與覆蓋索引之間的區別是什麼
- 8. 「;」和「;」之間的區別是什麼?和T-SQL中的「GO」?
- 9. 「按表索引」和「按記錄表索引」之間的區別是什麼?
- 10. sql server中truncate和delete之間有什麼區別?
- 11. SQL Server 2005中tran和transaction之間有什麼區別
- 12. Elasticsearch中的索引和索引之間是否有區別?
- 13. SQL中單引號和雙引號之間的區別是什麼?
- 14. $(())和expr之間的區別是什麼?
- 15. $(「」)和$ .find(「」)之間的區別是什麼?
- 16. $和$ .fn之間的區別是什麼?
- 17. 「\」和「\。」之間的區別是什麼?
- 18. 「$ | ++」和「$ | = 1」之間的區別是什麼
- 19. $(...)和`...`之間的區別是什麼
- 20. .equals()和==之間的區別是什麼?
- 21. [undefined]和[,]之間的區別是什麼?
- 22. Azure AD模塊和MS Online模塊之間有什麼區別
- 23. 數據庫 - TSQL(Sql Server 2008)中3和N'3'之間的區別是什麼
- 24. SQL Server中INSTEAD OF和AFTER觸發器之間的區別是什麼?
- 25. Azure AppFabric和Windows Server AppFabric之間的區別是什麼
- 26. SQL Server中用於別名的方括號和單引號之間的區別是什麼?
- 27. SQL語句中的反引號和方括號之間的區別是什麼?
- 28. Sql Server 2005和Sql Server 2008的主要區別是什麼?
- 29. PHP中「關聯」和「索引」數組之間的實際區別是什麼?
- 30. 查找和索引之間的區別
太棒了,謝謝亞倫。 –