• システム開発に関わる内容をざっくりと書いていく

SQL Server インデックス再構築 / 再構成の使い分け

断片化が進んだ索引に対して、再構築(リビルド)と再構成(リオーガナイズ)のどちらを使うかで、負荷・ロック・効果の出方が違う。数値の目安は環境依存なので、「どちらが軽いか/何が付随するか」で選ぶのが実務的。

先に結論

  • 再構成 … 比較的軽いオンライン寄りの整理。効果は穏やか
  • 再構築 … 作り直しに近く効果大。版やオプションでオンライン可否が変わる。統計も更新されやすい
  • 断片化%だけで機械的に切るより、サイズ・アクセス頻度・メンテ枠を見る
  • 小さな索引の頻繁なメンテはコスト倒れになりがち

使い分けの感覚

  • 断片化が中程度・メンテ時間を短くしたい → 再構成から
  • 断片化が大きい・効果をはっきり出したい → 再構築
  • オンライン再構築が使えない版/エディションなら、業務時間外の再構築計画が必要
  • ヒープや特殊索引、LOB が多い表は事前に影響を確認

運用でやりがちな失敗

  • 全索引を毎晩リビルド(ログ・CPU・ブロッキング増)
  • 断片化だけ見て、統計やクエリ自体の問題を放置
  • メンテ中に重いバッチを同時実行
  • フィルファクタやページ密度を無視した一律ジョブ

関連: 実行計画でインデックスが使われないとき

実務の進め方

  1. 大きい・よく触る索引の断片化とサイズを把握
  2. メンテ枠(時間・負荷許容)を決める
  3. 再構成で足りるか、再構築が必要かを個別判断
  4. 実施後に代表クエリの計画と時間を確認
  5. ジョブは対象を絞り、成功/失敗を監視

ざっくりまとめ

  • 再構成=軽め、再構築=強め(代償あり)
  • %閾値よりサイズと業務枠で選ぶ
  • 索引メンテはチューニングの一部。クエリ改善とセット

関連記事