SQL Serverで特定テーブルのインデックスの一覧を確認する方法

こんばんは。今回は超初歩的なSQL Serverのプチネタですが、SQL Serverでインデックスの一覧を確認する方法について解説します。

それではまいります。

特定テーブルのインデックスの一覧を確認する方法

結論、以下のクエリで確認できます。インデックスの情報はsys.indexesに格納されているので、これに必要情報をINNER JOINでいくつか足して一覧を取得しています。

SELECT i.name AS index_name  
    ,i.type_desc  
    ,is_unique  
    ,ds.type_desc AS filegroup_or_partition_scheme  
    ,ds.name AS filegroup_or_partition_scheme_name  
    ,ignore_dup_key  
    ,is_primary_key  
    ,is_unique_constraint  
    ,fill_factor  
    ,is_padded  
    ,is_disabled  
    ,allow_row_locks  
    ,allow_page_locks  
FROM sys.indexes AS i  
INNER JOIN sys.data_spaces AS ds ON i.data_space_id = ds.data_space_id  
WHERE is_hypothetical = 0 AND i.index_id <> 0   
AND i.object_id = OBJECT_ID('dbo.FactProductInventory'); 
GO  

type_descのところで、インデックスの種類も確認できます。(列ストアインデックスも含めて確認できます、その場合はCLUSTERED COLUMNSTORE/NONCLUSTERED COLUMNSTOREとして確認できるようです)

なお、sys.indexの定義はこちらの公式ドキュメントから確認できます。

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql?view=sql-server-ver16

超短いですが、以上、特定テーブルのインデックス一覧を取得する方法でした。

ご参考になりましたら幸いです。

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。