【ORACLE】インデックスの一覧を確認するSQL


ここではORACLEデータベースで、インデックスの一覧を取得するSQLを紹介しています。

インデックスの作成や変更、削除は↓で紹介していますので参考にしてください。
>>【ORACLE】インデックス(索引)を作成・変更・削除するSQL

インデックスの一覧を確認するSQL

全てのインデックスの一覧は、DBA_INDEXESを参照することで確認できます。

現行のユーザーがアクセスできるインデックスのみの一覧はALL_INDEXESで確認することが出来ます。

SELECT * FROM DBA_INDEXES;

列の意味は次の通りです。

列名

内容
OWNER インデクスの所有者
INDEX_NAME インデックスの名前
INDEX_TYPE インデックスタイプ
LOB,NORMAL,NORMAL/REV,BITMAP,FUNCTION-BASED NORMAL,FUNCTION-BASED NORMAL/REV,FUNCTION-BASED BITMAP,CLUSTER,IOT – TOP,DOMAIN
TABLE_OWNER インデックスが付いたオブジェクトの所有者
TABLE_NAME インデックスが付いたオブジェクトの名前
TABLE_TYPE インデックスが付いたオブジェクトの型
NEXT OBJECT,INDEX,TABLE,CLUSTER,VIEW.SYNONYM,SEQUENCE
UNIQUENESS インデックスがUNIQUEかどうか
COMPRESSION 圧縮が使用可能かどうか
PREFIX_LENGTH 圧縮キーの接頭辞内の列数
TABLESPACE_NAME インデックスが作成された表領域名
INITIAL_EXTENT 初期エクステントサイズ
NEXT_EXTENT セカンダリエクステントサイズ
MIN_EXTENTS セグメント内で使用できるエクステント最小数
MAX_EXTENTS セグメント内で使用できるエクステント最大数
PCT_INCREASE エクステントサイズの増加割合
PCT_THRESHOLD 1インデックスエントリ当たりの許容ブロック領域のしきい値(パーセント)
PCT_FREE ブロック内の空き領域の最小の割合
BLEVEL ルートブロックからリーフブロックまでの深さ
LEAF_BLOCKS 索引内のリーフ・ブロックの数
DISTINCT_KEYS 索引付けされた値の数
NUM_ROWS インデックス内の行数
SAMPLE_SIZE インデックスの分析に使用されたサンプル・サイズ
LAST_ANALYZED インデックスの分析(統計情報が取得)された最新の日付
DEGREE インデックスをスキャンするためのスレッド数
PARTITIONED インデックスがパーティション化されているかどうか
TEMPORARY インデックスが一時表にあるかどうか
GENERATED インデックス名がシステムによって生成されたかどうか
BUFFER_POOL インデックスブロックに対して使用されるバッファ・プール:DEFAULT,KEEP,RECYCLE,NULL
GLOBAL_STATS パーティション索引の場合はインデックス全体を分析して収集された統計情報なのかどうか
DOMIDX_STATUS ドメインインデックスのステータス
NULL-ドメインインデックスではない,VALID -有効,IDXTYP_INVLD-無効
FUNCIDX_STATUS ファンクションインデックスのステータス
NULL-ファンクションインデックスではない,ENABLED-使用可能,DISABLED-使用禁止
JOIN_INDEX 結合インデックスかどうか
DROPPED インデックスが削除されてごみ箱にあるかどうか
パーティション表の場合NULL
VISIBILITY インデックスが可視かどうか

まとめ

インデックスの一覧はDBA_INDEXESから確認することが出来ます。

インデックスの作成や変更、削除には↓の権限が必要です。
 作成:CREATE ANY INDEX
 変更:ALTER ANY INDEX
 削除:DROP ANY INDEX

システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL