首先,我不是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
答案 0 :(得分:12)
SQL Server不会重建不够大的索引。看一下fragment_count(这是sys.dm_db_index_physical_stats视图中的一个字段),对于那27个索引,它可能相当低。