mssql sqlserver索引碎片的整理方法分享


摘要:
下文记载一次索引碎片的整理方法分享,供大家使用
实验环境:sqlserver 2008 R2



索引碎片的危害:
mssql sqlserver存在大量的索引碎片会使用索引失效。

下文将讲述索引碎片整理的几种方法,供大家使用,如下所示:

  ---索引碎片的查看方法:
     SELECT object_name(dt.object_id) Tablename,si.name IndexName,
    dt.avg_fragmentation_in_percent AS ExternalFragmentation,
    dt.avg_page_space_used_in_percent AS InternalFragmentation FROM
     ( SELECT object_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent
    FROM sys.dm_db_index_physical_stats (db_id(‘数据库名’),null,null,null,’DETAILED’ )
    WHERE index_id <> 0) AS dt INNER JOIN sys.indexes si ON si.object_id=dt.object_id
    AND si.index_id=dt.index_id
    AND dt.avg_fragmentation_in_percent>10 AND
    dt.avg_page_space_used_in_percent<75 ORDER BY avg_fragmentation_in_percent DESC
 

----------------------------------------------------
索引碎片清理的方法分享:
方法1:
在索引上点击右键--"重新生成"或"重新组织",如下图所示:

mssql_sqlserver_右键重新生成及组织索引

mssql_sqlserver_右键重新生成及组织索引


方法2:
删除索引-->然后采用索引脚本重新建立索引
方法3:
使用脚本重建索引
ALTER INDEX [索引名称] ON [表名称] REBUILD
方法4:
使用脚本重建组织索引
ALTER INDEX [索引名称] ON [表名称] REORGANIZE


索引碎片整理注意事项:
索引整理时,会锁表,所以需避开业务高峰期进行此项数据库维护操作