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