ORACLE/INDEX編

オラクルちょこっとリファレンス

HOME > INDEX編

INDEX(インデックス/索引)

インデックスとは、表につける索引のことで、本に例えると目次にあたります。

もし、本で調べ物をするときに目次がなかったら、目的の情報に辿り着くまで1ページずつ見ていかなければなりませんが、目次があれば一発で目的のページに辿り着くことができます。

INDEXはまさしくこれと同じ役目をし、検索のパフォーマンスを上げる目的で使用されます。

インデックスの作成

インデックスの作成には、CREATE INDEX句を使用します。

CREATE INDEX構文
CREATE [UNIQUE | BITMAP] INDEX <インデックス名>
  ON <テーブル名>(列名 [ASC|DESC],...)
  [TABLESPACE 表領域名];

パラメータ 説明
UNIQUE 通常のINDEXを作成する
BITMAP BITMAP INDEXを作成する
TABLESPACE INDEXを作成する表領域を指定する
INDEXの作成例文
--インデックス(インデックス名:test_idx)を作成する CREATE INDEX test_idx ON user01.TEST_TABLE(CODE1, CODE2) TABLESPACE index_tbs;

CREATE INDEXの実行には以下の権限が必要です。

  • 自スキーマに作成する場合: 「CREATE INDEX」システム権限
  • 他スキーマに作成する場合: 「CREATE ANY INDEX」システム権限

インデックスの再作成

インデックスの再作成には、ALTER INDEX句を使用します。

ALTER INDEX構文 (インデックスの再作成)
ALTER INDEX <インデックス名> REBUILD ONLINE;

INDEXの再作成例文
--インデックス(インデックス名:test_idx)を再作成する。 ALTER INDEX test_idx REBUILD ONLINE;

インデックスの削除

インデックスの削除には、DROP INDEX句を使用します。

DROP INDEX構文
DROP INDEX <インデックス名>;

INDEXの削除例文
--インデックス(インデックス名:test_idx)を削除する。 DROP INDEX test_idx;

インデックスの情報を表示する

インデックスの情報を表示するには DBA_INDEXESデータディクショナリビューを検索します。

インデックスの情報を表示する
SELECT * FROM DBA_INDEXES;

データディクショナリビューには、DBA_やUSER_で始まるものもあります。
 違いは参照できる範囲が異なります。

【DBA_INDEXESの主要カラム】
カラム内容
OWNERインデックスの所有者
INDEX_NAMEインデックス名
INDEX_TYPEインデックスの種類
TABLE_OWNERインデックスが所属するテーブルの所有者
TABLE_NAMEインデックスが所属するテーブル名
TABLE_TYPEインデックスが所属するテーブルの種類
UNIQUENESSインデックスが一意か否か
(UNIQUE:一意 NONUNIQUE:一意でない)
COMPRESSION索引圧縮の使用可否
(ENABLED:使用可 DISABLED:使用禁止)
TABLESPACE_NAMEインデックスが所属する表領域名
LAST_ANALYZED最後に分析された日時

ここで取り上げているカラムは、主要なカラムのみです。

ToTop