ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

SQL Serverのインデックスの再編成のやり方

タイトルの通り、SQL Serverにおけるインデックスの再編成のやり方について方法を確認したいと思います。
SQL Serverではインデックスの再編成のやり方としては”再構築”と呼ばれるものと”再編成”と呼ばれるものがあります。どちらも目的は同じで、インデックスの断片化を解消することですがその処理の具体的な内容が異なるようです。

以下では実際にそれぞれ簡単にインデックスの再編成のやり方を見ていきます。

インデックスの再構築

まずは、インデックスの再構築から簡単に紹介します。こちらは後程紹介する再編成と比較して、より本格的な再編をするためのコマンドになります。

あるインデックスを指定してインデックスの再構築をする場合は、以下のコマンドを実行します。

ALTER INDEX <インデックス名> REBUILD;

テーブル名を指定してそのテーブルのすべてのインデックスを再構築する場合は、以下のコマンドを実行します。

ALTER INDEX ALL ON <テーブル名> REBUILD;

インデックスの再編成

次はインデックスの再編成を紹介します。先ほどは紹介した再構築と比べて簡易な再編を行うことができます。

あるインデックスを指定してインデックスの再編成をする場合は、以下のコマンドを実行します。

ALTER INDEX <インデックス名> REORGANIZE

どちらをどのように使い分ければよいか?

これについては、やや古いですがMicrosoftのブログにそれぞれの特徴やその使い分けるタイミングについて記載がありました。とてもわかりやすく参考になりましたので、以下掲載させていただきます。
docs.microsoft.com

おわりに

いかがでしたでしょうか。簡単にですが、SQL Serverにおけるインデックスの再編成のやり方を記載しました。
今回は主にコマンドのみを紹介しましたが、本来であればその実行するタイミングなどを詳しく紹介したかったのですがまだまだ勉強中ですので今後の課題として後に取っておきます。。

実は、上記のコマンドを使わないでもたとえば一度インデックスを削除してもう一度作成しても問題ありません。
ただし、もし再作成時にエラーが発生してしまうと新たに作成するまでは当然ながらインデックスがない状態ですので注意したほうがよさそうです。

今回はこの辺で失礼いたします。最後までお読みいただきありがとうございました。