こんばんは。今回は超初歩的な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の定義はこちらの公式ドキュメントから確認できます。
超短いですが、以上、特定テーブルのインデックス一覧を取得する方法でした。
ご参考になりましたら幸いです。
コメントを残す