ここでは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