3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テーブルに適用されているインデックスとそのカラムを調べる方法

Posted at

Azure SQL Database に自動チューニングというのがあって、たくさんクエリーを投げると、パフォーマンスを改善するインデックスを特定し、自動で作成してくれる。ある程度はエンジニアで試行錯誤しながら事前にインデックスを作成できるが、それだけでなく、実際に運用に投入してから実際によくつかわれるクエリから勝手に作ってくれる。

かなり便利なんだけど、いったいどのカラムにどういったインデックスを作成してくれたのかを知りたくなったので、調べてみた。

SQL Serverではデータベースやデータベースサーバーに関する情報を提供するカタログビューというものがあり、その中にインデックスやテーブルの情報を持つビューがある。
それらを組み合わせることで、インデックスの名前とそれに関連するカラム名の一覧を取ることができる。

実際に使ったクエリ

SELECT
    indx.name    -- インデックス名
    , clmns.name -- インデックスのカラム名
FROM sys.index_columns AS indx_clmns
JOIN sys.indexes AS indx 
    ON indx_clmns.object_id = indx.object_id AND indx.index_id = indx_clmns.index_id
JOIN sys.columns AS clmns
    ON indx.object_id = clmns.object_id AND indx_clmns.column_id = clmns.column_id
WHERE indx.object_id = OBJECT_ID('dbo.users')

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?