重建索引不会更改非聚簇索引的碎片%

时间:2010-03-22 06:45:41

标签: sql-server indexing

首先,我不是DBA,我正在努力重建索引。

我利用msdn中令人惊讶的TSQL脚本根据dm_db_index_physical_stats返回的fragmente百分比更改索引,如果片段百分比超过30,则执行REBUILD或重新进行重组。

我发现,在第一次迭代中,有87条记录需要碎片整理。我运行了脚本,所有87个索引(聚簇和非聚簇)都被重建或重新编制索引。当我从dm_db_index_physical_stats获得统计数据时,仍有27条记录需要碎片整理,所有这些记录都是非聚集索引。所有聚集索引都是固定的。

无论我多少次运行脚本来对这些记录进行碎片整理,我仍然会使用相同的索引进行defraged,并且大多数都具有相同的碎片%。在此之后似乎没有任何改变。

注意:在这些迭代期间,我没有对表执行任何插入/更新/删除操作。重建/重组仍未导致任何变化。

更多信息:使用SQL 2008 msdn http://msdn.microsoft.com/en-us/library/ms188917.aspx

中提供的脚本

您能否解释一下为什么这些非聚集索引的27条记录没有被更改/修改?

对此的任何帮助都将受到高度赞赏。

的Nod

1 个答案:

答案 0 :(得分:12)

SQL Server不会重建不够大的索引。看一下fragment_count(这是sys.dm_db_index_physical_stats视图中的一个字段),对于那27个索引,它可能相当低。