SQL Server 索引碎片清理


查看碎片

SELECT  DB_NAME() AS DatbaseName ,
        SCHEMA_NAME(o.Schema_ID) AS SchemaName ,
        OBJECT_NAME(s.[object_id]) AS TableName ,
        i.name AS IndexName ,
        ROUND(s.avg_fragmentation_in_percent, 2) AS [Fragmentation %] ,
        CASE WHEN avg_fragmentation_in_percent > 30 THEN '严重碎片,索引需要重建'
             WHEN avg_fragmentation_in_percent >= 5
                  AND avg_fragmentation_in_percent < 30 THEN '轻度碎片,索引需要重新组织'
             ELSE '正常状态'
        END 提示
FROM    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) s
        INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
        INNER JOIN sys.objects o ON i.object_id = O.object_id
ORDER BY [Fragmentation %] DESC  

清理碎片

///用DBCC查看扫描密度
dbcc showcontig(@table_id)

  这里可以看到扫描密度最佳计数和实际计数差别还是比较大的。并且逻辑扫描碎片达到99%


  执行数据库表索引重建

DBCC DBREINDEX('bs_TestResultRecord')


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM