DBAtlas · データベース運用アトラス

インデックスの再構築 / 再構成

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 はリソース使用量に影響する。

DBAtlas で開く →

関連項目