レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

SQLServer2005で、インデックスを全般的にリビルドするクエリを作るクエリ

昨日のエントリ(Index再構築)の続きとして、インデックスをガバッとリビルドしたいと思ったときに、
良い方法がなかったので、
「リビルドするためのクエリ」を作るためのクエリを考えた。

select 'ALTER INDEX ALL ON ' + object_name(dm.object_id) + ' REBUILD;'
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL,NULL, NULL, NULL) AS dm
where avg_fragmentation_in_percent > 30

ALTER INDEX のALLキーワードを使えば、対象テーブルのすべてのインデックスをリビルド対象に出来る。

あとは、断片化が激しい(30%以上)のテーブルを探し出して
それらを文字列結合でクエリ化する。