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_で始まるものもあります。
違いは参照できる範囲が異なります。
カラム | 内容 |
---|---|
OWNER | インデックスの所有者 |
INDEX_NAME | インデックス名 |
INDEX_TYPE | インデックスの種類 |
TABLE_OWNER | インデックスが所属するテーブルの所有者 |
TABLE_NAME | インデックスが所属するテーブル名 |
TABLE_TYPE | インデックスが所属するテーブルの種類 |
UNIQUENESS | インデックスが一意か否か (UNIQUE:一意 NONUNIQUE:一意でない) |
COMPRESSION | 索引圧縮の使用可否 (ENABLED:使用可 DISABLED:使用禁止) |
TABLESPACE_NAME | インデックスが所属する表領域名 |
LAST_ANALYZED | 最後に分析された日時 |
ここで取り上げているカラムは、主要なカラムのみです。