首先,我不是DBA,我正在努力重建索引.
我利用来自msdn的惊人Tsql脚本根据dm_db_index_physical_stats返回的fragmente百分比更改索引,如果片段百分比超过30,则执行REBUILD或重新进行重组.
我发现,在第一次迭代中,有87条记录需要碎片整理.我运行了脚本,所有87个索引(聚簇和非聚簇)都被重建或重新编制索引.当我从dm_db_index_physical_stats获得统计数据时,仍有27条记录需要碎片整理,所有这些记录都是非聚集索引.所有Clustered索引都是固定的.
无论我运行多少次脚本来对这些记录进行碎片整理,我仍然可以使用相同的索引进行defraged,并且大多数都具有相同的碎片%.在此之后似乎没有任何改变.
注意:在这些迭代期间,我没有对表执行任何插入/更新/删除操作.仍然重建/重组没有导致任何变化.
更多信息:使用sql 2008
脚本在msdn http://msdn.microsoft.com/en-us/library/ms188917.aspx中可用
您能否解释一下为什么这27个非聚簇索引的记录没有被更改/修改?
任何有关这方面的帮助将受到高度赞赏.
点头
解决方法
sql Server不会重建不够大的索引.看一下fragment_count(这是sys.dm_db_index_physical_stats视图中的一个字段),对于那27个索引来说可能相当低.