SQLServerでテーブルに設定されているインデックスを検索する方法です。
テーブルに設定されているインデックスをSQLで検索
SQLServerでテーブルに設定されているインデックスを検索する方法です。
検索するSQL
検索するにはsys.indexesビューから情報を取得します。
--テスト用のテーブルを作成(プライマリキーを設定) CREATE TABLE test_tbl ( idx INT ,name VARCHAR(20) ,age INT CONSTRAINT test_tbl_pk PRIMARY KEY CLUSTERED ( idx ) ) --テスト用のインデックスを作成(ユニークキーを設定) CREATE UNIQUE INDEX test_tbl_idx1 ON test_tbl ( name ) --テスト用の通常のインデックスを作成 CREATE NONCLUSTERED INDEX test_tbl_idx2 ON test_tbl ( age ) --インデックスを検索 SELECT t.name AS テーブル名 ,i.name AS インデックス名 ,CASE WHEN i.is_primary_key = 1 THEN 'プライマリーキー' ELSE '' END AS プライマリーキー ,CASE WHEN i.is_unique = 1 THEN 'ユニークキー' ELSE '' END AS ユニークキー ,t.create_date AS 作成日 ,t.modify_date AS 修正日 FROM sys.indexes AS i INNER JOIN sys.tables t ON i.object_id = t.object_id INNER JOIN sys.schemas AS s ON t.schema_id = s.schema_id WHERE i.index_id NOT IN ( SELECT d.index_id FROM sys.dm_db_index_usage_stats AS d WHERE d.object_id = i.object_id AND i.index_id = d.index_id ) AND t.name = 'test_tbl' ORDER BY プライマリーキー DESC ,ユニークキー DESC DROP TABLE test_tbl
実行結果
実行結果は以下のようになります。
テーブル名 | インデックス名 | プライマリーキー | ユニークキー | 作成日 | 修正日 |
---|---|---|---|---|---|
test_tbl | test_tbl_pk | プライマリーキー | ユニークキー | 2014-09-30 11:23:23.410 | 2014-09-30 11:23:23.457 |
test_tbl | test_tbl_idx1 | ユニークキー | 2014-09-30 11:23:23.410 | 2014-09-30 11:23:23.457 | |
test_tbl | test_tbl_idx2 | 2014-09-30 11:23:23.410 | 2014-09-30 11:23:23.457 |