SQLServer索引碎片查詢及處理

1:查詢索引碎片

SELECT OBJECT_NAME(ips.object_id) AS TableName,
       ips.index_id,
       name AS IndexName,
       avg_fragmentation_in_percent,
       DB_NAME(ips.database_id) AS DatabaseName
FROM sys.dm_db_index_physical_stats(DB_ID(DB_NAME()), NULL, NULL, NULL, NULL) AS ips
    INNER JOIN sys.indexes AS si
        ON si.object_id = ips.object_id
           AND si.index_id = ips.index_id
WHERE ips.avg_fragmentation_in_percent > 0
      AND si.index_id <> 0;

  
avg_fragmentation_in_percent是索引碎片率,低於5%可以不考慮。5%-30%建議reorganize,超過30%建議rebuild

2:reorganize

alter index [index_name] on dbo.[表名] reorganize;

3:rebuild

alter index [index_name] on dbo.[表名] rebuild;

4:rebuild all 重建表上所有索引

alter index all on dbo.[表名] rebuild;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章