今回のやることを説明してみる
未使用のインデックスが多く存在すると、追加・更新スピードなどに影響を及ぼします。よくあるクエリですが、未使用インデックスを抽出するクエリを作成したいと思います。
使用する環境を説明してみる
Microsot Azure 上で 動作している Windows Server 2012 R2、SQL Server 2014 で動作確認をします。データベースは、AdventureWorks2012 を使用します。
実際にためしてみる
未使用インデックスのクエリは下記の通りです。SQL Server Management Studio で実行してみましょう。
SELECT [スキーマ名] = s.name,
[テーブル名] = t.name,
[インデックス名] = i.name,
[作成日] = t.create_date,
[修正日] = t.modify_date
FROM sys.indexes i
INNER JOIN sys.tables t
ON i.object_id = t.object_id
INNER JOIN sys.schemas s
ON t.schema_id = s.schema_id
WHERE i.index_id NOT IN ( SELECT ius.index_id
FROM sys.dm_db_index_usage_stats AS ius
WHERE ius.object_id = i.object_id
AND i.index_id = ius.index_id
)
ORDER BY [スキーマ名],[テーブル名],[インデックス名]
次回何をするのか宣言してみる
調査用クエリは今後も作成し続けます!