Oracle管理者のためのSQLリファレンス

索引の確認/作成/削除

索引とは表データに高速アクセスするための構造体で、表の1つ以上の列に作成します。列の組み合わせが異なるかぎり、表には複数の索引を作成できます。Oracleで提供されている索引は、「Bツリー索引」「Bツリークラスタ索引」「ハッシュ・クラスタ索引」「逆キー索引」「ビットマップ索引」「ビットマップ結合索引」「ファンクション索引」「ドメイン索引」などです。表に新たな索引を作成しても、アプリケーションから発行するSQL文を変更する必要はありません。また、索引のメンテナンスはOracleが自動で行います。(SQLの表記ルールは、こちらから参照できます)

索引を確認する
SELECT * FROM dba_indexes;
SELECT * FROM dba_ind_columns;
-- または
SELECT * FROM user_indexes;
SELECT * FROM user_ind_columns;
索引の定義を確認するには、DBA_INDEXES/DBA_IND_COLUMNSまたはUSER_INDEXES/USER_IND_COLUMNSを問い合わせます。USER_INDEXES/USER_IND_COLUMNSではデータベースに接続しているユーザーのスキーマに作成された索引の定義を確認できます。DBA_INDEXES/DBA_IND_COLUMNSはすべての索引定義を確認できますが、このビューにアクセスするにはSELECT ANY TABLE権限が必要です。この権限は、デフォルトでDBAロールに割り当てられます。

Bツリー索引を作成する
CREATE [UNIQUE] INDEX [schema.] index ON [schema.] table
(column [, column …])
[TABLESPACE {tablespace | DEFAULT}]
[{COMPRESS integer | NOCOMPRESS}]
[{SORT | NOSORT}];
Oracleではデフォルトの索引はBツリー索引になります。Bツリー索引を作成するには、CREATE INDEX文で索引名(index)を指定し、ON句に続けて索引を作成する表名(table)、列名(column)を指定します。列は最大32個まで指定が可能です。

UNIQUEオプション
UNIQUEを指定すると、一意索引を作成できます。一意索引では、索引に同じ値を含めることはできません。UNIQUEを指定しなくても、一意キー制約や主キー制約を持つ列に索引を作成すると、暗黙的に一意索引となります。

TABLESPACE句
TABLESPACE句を使って索引を格納する表領域(tablespace)を指定できます。省略すると索引を定義しようとしているスキーマ所有者のデフォルト表領域に作成されます。ローカル索引の場合は、表領域(tablespace)の代わりにDEFAULTキーワードを指定できます。

キー圧縮
COMPRESSを指定すると、キー圧縮を使用可能にできます。整数値(integer)を使用して圧縮する接頭辞列数を指定します。NOCOMPRESS(デフォルト)を指定すると、キー圧縮を使用禁止にできます。

NOSORT
NOSORTを指定すると、すでに表内でソート済みの列を、索引作成時にソートしないようにできます。省略するとデフォルト(SORT)でソートが行われます。
関連項目:索引を削除する

Bツリークラスタ索引を作成する
CREATE [UNIQUE] INDEX [schema.] index ON
CLUSTER [schema.] cluster
[TABLESPACE {tablespace | DEFAULT}];
クラスタ索引を作成するには、CREATE INDEX文で索引名(index)を指定し、ON CLUSTER句に続けて索引を作成するクラスタ名(cluster)を指定します。

TABLESPACE句
TABLESPACE句を使って索引を格納する表領域(tablespace)を指定できます。省略すると索引を定義しようとしているスキーマ所有者のデフォルト表領域に作成されます。ローカル索引の場合は、表領域(tablespace)の代わりにDEFAULTキーワードを指定できます。
関連項目:索引を削除する

ビットマップ索引を作成する
CREATE BITMAP INDEX [schema.] index ON [schema.] table
(column [, column …])
[TABLESPACE {tablespace | DEFAULT}];
ビットマップ索引を作成するには、CREATE BITMAP INDEX文で索引名(index)を指定し、ON句に続けて索引を作成する表名(table)、列名(column)を指定します。列は最大30個まで指定が可能です。ビットマップ索引の作成では、UNIQUEは指定できません。

TABLESPACE句
TABLESPACE句を使って索引を格納する表領域(tablespace)を指定できます。省略すると索引を定義しようとしているスキーマ所有者のデフォルト表領域に作成されます。ローカル索引の場合は、表領域(tablespace)の代わりにDEFAULTキーワードを指定できます。
関連項目:索引を削除する

ファンクション索引を作成する
CREATE [UNIQUE] INDEX [schema.] index ON [schema.] table
(column_expression [, column_expression …])
[TABLESPACE {tablespace | DEFAULT}]
[{COMPRESS integer | NOCOMPRESS}]
[{SORT | NOSORT}];
ファンクション索引を作成するには、CREATE INDEX文で索引名(index)を指定し、ON句に続けて索引を作成する表名(table)、ファンクション(column_expression)を指定します。ファンクションは、列、定数、SQLファンクション、ユーザー定義ファンクションから作成された式を指定します。

TABLESPACE句
TABLESPACE句を使って索引を格納する表領域(tablespace)を指定できます。省略すると索引を定義しようとしているスキーマ所有者のデフォルト表領域に作成されます。ローカル索引の場合は、表領域(tablespace)の代わりにDEFAULTキーワードを指定できます。

キー圧縮
COMPRESSを指定すると、キー圧縮を使用可能にできます。整数値(integer)を使用して圧縮する接頭辞列数を指定します。NOCOMPRESS(デフォルト)を指定すると、キー圧縮を使用禁止にできます。

NOSORT
NOSORTを指定すると、すでに表内でソート済みの列を、索引作成時にソートしないようにできます。省略するとデフォルト(SORT)でソートが行われます。
関連項目:索引を削除する

逆キー索引を作成する
CREATE [UNIQUE] INDEX [schema.] index ON [schema.] table
(column [, column …])
REVERSE
[TABLESPACE {tablespace | DEFAULT}]
[{COMPRESS integer | NOCOMPRESS}]
[{SORT | NOSORT}];
逆キー索引を作成するには、CREATE INDEX文で索引名(index)を指定し、ON句に続けて索引を作成する表名(table)、列名(column)、REVERSEを指定します。 REVERSEを指定すると、ROWID以外の索引ブロックのバイトは逆順で格納されます。

TABLESPACE句
TABLESPACE句を使って索引を格納する表領域(tablespace)を指定できます。省略すると索引を定義しようとしているスキーマ所有者のデフォルト表領域に作成されます。ローカル索引の場合は、表領域(tablespace)の代わりにDEFAULTキーワードを指定できます。

キー圧縮
COMPRESSを指定すると、キー圧縮を使用可能にできます。整数値(integer)を使用して圧縮する接頭辞列数を指定します。NOCOMPRESS(デフォルト)を指定すると、キー圧縮を使用禁止にできます。

NOSORT
NOSORTを指定すると、すでに表内でソート済みの列を、索引作成時にソートしないようにできます。省略するとデフォルト(SORT)でソートが行われます。
関連項目:索引を削除する

索引を削除する
DROP INDEX [schema.] index;
索引を削除するには、DROP INDEX文で削除する索引名(index)を指定します。

Oracle管理者のためのSQLリファレンス



   Oracle関連記事リンク集

.NETでOracleアプリを作ろう

本記事では、Oracleが提供する.NETプラットフォーム開発向けのミドルウェアやツールを使って、.NET環境でOracleアプリケーション開発を効率的に行うためのノウハウを解説する

最終更新 2006/3/7

ODP.NETファーストステップ

Visual Basicから.NETへの移行を考えているOracleアプリケーション開発者に向けて、「Oracle Data Provider for .NET」を使うメリットや独自機能、新しいプログラミング・スタイルなどを解説する

最終更新 2005/2/26

Excel‐Oracle連携

企業にはIT化されていないデータが膨大に蓄積されている。これをOracleデータベースと連携させて活用できれば、紙ベースの承認や手作業のデータ打ち込みは不要になる。そのコスト削減効果は莫大だ。本連載はExcelに溜め込んだ“死蔵データ”をOracleデータベースによって復活・活用するための全テクニックを紹介する

最終更新 2005/9/9


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

注目のテーマ

Database Expert 記事ランキング

本日月間
ソリューションFLASH