昨日のエントリ(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%以上)のテーブルを探し出して
それらを文字列結合でクエリ化する。