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. 查找和索引之间的区别
太棒了,谢谢亚伦。 –