在SQL Server维护计划中重新组织索引vs重建索引
时间:2020-03-05 18:38:54 来源:igfitidea点击:
在更好的SQL Server数据库的SSW规则中,有一个完整的数据库维护计划的示例:SSW。在示例中,它们同时运行"重组索引","重建索引"和"更新统计信息"。这有什么意义吗?我以为Reorganize Index是Rebuild Index的快速但效果较差的版本?并且索引重建还将自动更新统计信息(至少在聚集索引上)。
解决方案
回答
重组和重建是不同的事情。
重新组织:这是索引的碎片整理。获取现有索引并对现有页面进行碎片整理。但是,如果页面不是连续的,它们将像以前一样保持原状。仅页面的内容正在更改。
重建:实际上,它会删除索引并从头开始重建它。这意味着我们将获得一个全新的索引,其中包含碎片整理和连续的页面。
此外,通过重新构建,我们可以更改分区或者文件组,但是通过重新组织,不仅可以对整个索引进行碎片整理,还可以对索引的一个分区进行碎片整理。
更新统计信息在聚集索引上是自动的,但在非聚集索引上不是自动的。
回答
正是Biri所说的。这是重新索引整个数据库的方法:
EXEC [sp_MSforeachtable] @command1="RAISERROR('DBCC DBREINDEX(''?'') ...',10,1) WITH NOWAIT DBCC DBREINDEX('?')"
回答
对索引进行重组时,如果索引分布在两个或者多个物理文件中,则数据将仅在数据文件中进行碎片整理。页面不会从一个数据文件移动到另一个。
当索引位于单个文件中时,重组和重新索引将具有相同的最终结果。
有时候重组会更快,而有时候重组会更快,这取决于索引的碎片程度。索引的碎片越少,则重组会越快,碎片越多,重组的速度就越慢,但重建索引的速度就越快。