インデックスの再構築 / 再構成
SQL Serverメンテナンスコマンド
-- Rebuild (high fragmentation > 30%). ONLINE requires Enterprise:
ALTER INDEX IX_Customer_Email ON dbo.Customer
REBUILD WITH (ONLINE = ON, MAXDOP = 4, SORT_IN_TEMPDB = ON);
-- All indexes of a table:
ALTER INDEX ALL ON dbo.Customer REBUILD WITH (FILLFACTOR = 90);
-- Reorganize (moderate fragmentation 5-30%, always online, can be stopped):
ALTER INDEX IX_Customer_Email ON dbo.Customer REORGANIZE;概要
REBUILD はインデックスをゼロから再作成する (断片化を完全に解消し、統計を更新する)。REORGANIZE はリーフレベルをその場で圧縮する (軽量、非ブロッキング)。
使用する場面
断片化が 5〜30% なら REORGANIZE、30% を超えるなら REBUILD。大きなテーブルではメンテナンス時間帯に実施する。
注意
ONLINE = ON は Enterprise/Developer でのみ使用可能。Standard では OFF を使用する (テーブルがロックされる)。REBUILD は大量のログを生成し、領域を必要とする。MAXDOP と SORT_IN_TEMPDB はリソース使用量に影響する。