インデックスの断片化を表示する
SQL Serverメンテナンスコマンド
SELECT OBJECT_SCHEMA_NAME(ips.object_id) AS schema_name,
OBJECT_NAME(ips.object_id) AS table_name,
i.name AS index_name,
ips.index_type_desc,
ROUND(ips.avg_fragmentation_in_percent,1) AS frag_pct,
ips.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(N'Customer'), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i
ON i.object_id = ips.object_id AND i.index_id = ips.index_id
WHERE ips.avg_fragmentation_in_percent > 10
AND ips.page_count > 1000
ORDER BY ips.avg_fragmentation_in_percent DESC;概要
インデックスの断片化率とページ数を一覧表示する。再構築 / 再構成の判断の基準となる。
使用する場面
メンテナンスの前に、対処すべきインデックスを決定するため。
注意
小さなインデックス (< 1000 ページ) では断片化は問題にならないため、除外される。'DETAILED' モードはより正確だが非常にコストが高い。通常は 'LIMITED' で十分。照会のみでリスクなし。