はじめに
SQL Serverでパフォーマンスを意識し始めると、インデックスのメンテナンスとあわせて「統計情報」の扱いが気になってくることがあります。
特に、「REBUILD(インデックス再構築)をすると統計情報はどうなるのか?」という点は、実務でも意外と見落とされがちです。
本記事では、インデックス再構築時の統計情報の挙動と、フルスキャンとの関係について整理します。
結論:REBUILD時は統計情報がフルスキャンで更新される
SQL Serverでは、インデックスをREBUILDすると、そのインデックスに紐づく統計情報も同時に更新されます。
このとき、統計情報はフルスキャン(全件読み取り)で更新されるのが特徴です。
つまり、インデックスを作り直す処理の中で、データ全体を読み込むため、高精度な統計情報が再作成されます。
※この挙動については、Microsoftの公式ドキュメントでも説明されています。

REORGANIZEとの違い
インデックスメンテナンスには、REBUILDとREORGANIZEの2つがあります。
この2つの違いのひとつが、統計情報の扱いです。
・REBUILD → 統計情報も更新(フルスキャン)
・REORGANIZE → 統計情報は更新されない
そのため、REORGANIZEだけでは統計情報が古いままになる可能性があります。
REORGANIZEとREBUILDの違いや使い分けについては、以下の記事で詳しく解説しています。
SQL ServerのREORGANIZEとREBUILDの違い|使い分けと判断基準を解説
なぜフルスキャンで更新されるのか
インデックス再構築は、インデックスを作り直す処理です。
その過程でテーブル(クラスタ化インデックス)のデータをすべて読み直すため、結果として統計情報もフルスキャン相当の精度で再作成されます。
SQL Serverでは、クラスタ化インデックスがテーブルの実体となるため、こうした動きになります。
このあたりの仕組みについては、以下の記事で詳しく解説しています。
SQL Serverにテーブル再編成(REORG)がない理由|Db2・Oracleとの違いも解説
実務でのポイント
実務では、統計情報の精度はクエリ性能に大きく影響します。
REBUILDを実行すると、
・断片化の解消
・統計情報の高精度化
が同時に行われるため、パフォーマンス改善につながるケースがあります。
一方で、REORGANIZEのみを実行した場合は統計情報が更新されないため、必要に応じて別途UPDATE STATISTICSを実行することも検討します。
統計情報の基本や手動更新については、以下の記事で解説しています。
SQL Server UPDATE STATISTICSの仕組みと実行タイミング|統計情報の基礎を解説
まとめ
SQL Serverでは、インデックス再構築(REBUILD)を実行すると、統計情報もフルスキャンで更新されます。
・REBUILD → 統計情報更新(フルスキャン)
・REORGANIZE → 統計情報更新なし
この違いを理解しておくことで、より適切なインデックスメンテナンスが可能になります。


コメント