SQL ServerのREORGANIZEとREBUILDの違い|使い分けと判断基準を解説

SQL ServerのREORGANIZEとREBUILDの違い|使い分けと判断基準を解説 SQL Server

はじめに

SQL Serverでインデックスのメンテナンスを調べていると、「REORGANIZE」と「REBUILD」という2つの方法が出てきます。

どちらも断片化を解消するための処理ですが、「結局どっちを使えばいいのか?」と迷ったことはないでしょうか。

本記事では、インデックス再構成(REORGANIZE)と再構築(REBUILD)の違いと、実務での使い分けをわかりやすく整理します。

なお、SQL Serverのインデックス構造については、以下の記事で解説しています。

SQL Serverにテーブル再編成(REORG)がない理由|Db2・Oracleとの違いも解説

結論:軽いならREORGANIZE、重いならREBUILD

先に結論です。

・断片化が軽い → REORGANIZE
・断片化が大きい → REBUILD

一般的には以下が目安になります。

・5〜30% → REORGANIZE
・30%以上 → REBUILD

まずはこの基準を押さえておけばOKです。

断片化を確認する方法については、以下の記事で解説しています。

SQL Serverのインデックス断片化を確認する方法|DMVで簡単チェック

REORGANIZEとREBUILDの違い

ざっくり言うと、2つの違いは「どれくらい手を入れるか」です。

■ REORGANIZE(再構成)
・既存のインデックスを整理する
・断片化したページを並び替える
・オンラインで実行可能(影響が小さい)

■ REBUILD(再構築)
・インデックスを一度作り直す
・データを再配置して完全に整理する
・負荷が高い(時間もかかる)

イメージとしては、

REORGANIZE:軽い掃除
REBUILD:作り直し

と考えるとわかりやすいです。

実務で気になるポイントをもう少しだけ整理します。

■ 負荷
REORGANIZE:低い
REBUILD:高い

■ ロック
REORGANIZE:基本的に影響が小さい
REBUILD:状況によってはロックが強くなる

■ 効果
REORGANIZE:部分的な改善
REBUILD:完全に最適化される

このあたりを踏まえると、「気軽にできるのはREORGANIZE」「しっかり直すのがREBUILD」という位置づけになります。

再構成 (REORGANIZE)再構築 (REBUILD)
処理対象インデックスのリーフレベルのみインデックス全体
同時実行性処理中も処理対象インデックスは使用可。 処理しているページに対して、そのページの処理中のみロックが保持される処理中は処理対象インデックスは使用不可。(ONLINE の場合は使用可) インデックス全体がロックされる
処理を途中でキャンセルした場合キャンセルした時点までの処理は有効。(キャンセル時点で処理が完了した部分については断片化が解消した状態が維持される)処理はすべて無効。(元の状態に戻される)
生成されるトランザクションログレコードの量断片化の度合が大きいと多くなる断片化の度合にほとんど影響されない
使用するデータファイル内の領域再構築よりも少ない再構成よりも多い
処理完了までに必要な時間断片化の度合が大きいと長くなる断片化の度合にほとんど影響されない

上記の表は、Microsoftの解説を参考に掲載しています。

インデックス再構築と再構成の違い

実務での使い分け

実務では「どちらが優れているか」ではなく、「どの状況で使うか」が重要です。

基本は断片化の割合で判断します。

・断片化が軽い → REORGANIZE
・断片化が大きい → REBUILD

ただし、本番環境では負荷や影響も考慮する必要があります。

例えば、

・日次はREORGANIZEのみ実施
・月次バッチでREBUILD

といった運用にしているケースも多いです。

無理にREBUILDを実行すると性能影響が出ることもあるため、「いつ実行するか」も重要なポイントです。

まとめ

インデックス再構成と再構築の違いはシンプルです。

・REORGANIZE:軽い整理
・REBUILD:作り直し

そして重要なのは使い分けです。

・軽い断片化 → REORGANIZE
・大きな断片化 → REBUILD

SQL Serverではインデックス管理がそのままパフォーマンスに影響するため、定期的なメンテナンスを意識することが重要です。

インデックスが効かない原因については、以下の記事で整理しています。

SQL Serverでインデックスが効かない原因と対処法|実行計画の確認ポイント

コメント

タイトルとURLをコピーしました