SQL Server查看索引碎片率并进行整理

--第1步:查找碎片大于某个阈值的索引(此处阈值90)

SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName,
    ind.name AS IndexName,
    indexstats.index_type_desc AS IndexType,
    indexstats.avg_fragmentation_in_percent 
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats 
    INNER JOIN sys.indexes ind ON ind.object_id = indexstats.object_id AND ind.index_id = indexstats.index_id 
WHERE indexstats.avg_fragmentation_in_percent > 90 
ORDER BY indexstats.avg_fragmentation_in_percent DESC

运行结果

--第2步:重新组织索引(把第1步里的表名TableName复制进来,并调整阈值)

ALTER INDEX ALL ON [TableName] 
REBUILD WITH (FILLFACTOR = 90, SORT_IN_TEMPDB = ON,STATISTICS_NORECOMPUTE = ON); 

参考:如何查看SQL Server的索引碎片情况并进行整理 - 代码先锋网

猜你喜欢

转载自blog.csdn.net/a497785609/article/details/133901803