SQL Server のインデックスの再構築を定期的に実行する方法としてメンテナンスプランを使用てインデックスメンテナンスをする方法があります。
メンテナンスプランでは細かい制御ができない (と思っているのですが) 状況によっては T-SQL で対応する必要が出てきます。
今回の投稿では、データベース内の全ユーザーテーブルに対してインデックスの再構築をする SQL をまとめてみたいと思います。
■全インデックスを再構築する SQL
以下のような SQL で全インデックスの再構築を行うことができます。
USE [TEST] SET @Edition = CONVERT(nvarchar, SERVERPROPERTY(‘Edition’)) SET @basesql = ‘ALTER INDEX @1 On @2 REBUILD @3’ IF PATINDEX(‘%Enterprise%’, @Edition) > 0 DECLARE IXC CURSOR FOR OPEN IXC FETCH NEXT FROM IXC WHILE @@FETCH_STATUS = 0 SET @sql = REPLACE(@basesql, ‘@1’, @IndexName) FETCH NEXT FROM IXC CLOSE IXC |
SQL Server ではエディションによって、使用できる機能に差がありますので、エディションを判断してオプションを書き換えるようにしています。
# Standard Edition での動作確認ができていないのですが…。
T-SQL で動的な文字列を生成してインデックスの再構築を行っていますので、柔軟に設定を変更することが可能です。
この手の保守用のスクリプトは一度作成すると使いまわしができますのでいろいろとストックしておくと便利ですね。