MSSQL 获取表索引碎片的方法


一、索引碎片如何产生

索引碎片是由于表中的数据,进行频繁的增删改操作 ,导致表所对应的索引,频繁的移动,清理;
从而导致索引出现不连续的情况,导致索引实际占用空间大于所需空间,我们将这种占用空间异常的现象称之为索引碎片。


二、查看指定表的索引碎片大小

select 
object_name(a.object_id) as [表名]
,a.index_id as [索引ID]
,name  as [索引名]
,avg_fragmentation_in_percent as [碎片信息]
FROM sys.dm_db_index_physical_stats 
(
DB_ID()
, NULL
, NULL, NULL, NULL
) AS a
right JOIN sys.indexes AS b 
ON a.object_id = b.object_id AND a.index_id = b.index_id
where  b.name is not null and 
 object_name(a.object_id) ='T901SaleAfter_weiXiuMain'



三、清理表的索引碎片

我们可以采用重新组织或重新生成索引来解决索引碎片过大的情况

相关阅读 放入以下文章
论索引碎片
MSSQL DBCC showcontig用法简介