Oracle管理者のためのSQLリファレンス
■索引の確認/作成/削除
索引とは表データに高速アクセスするための構造体で、表の1つ以上の列に作成します。列の組み合わせが異なるかぎり、表には複数の索引を作成できます。Oracleで提供されている索引は、「Bツリー索引」「Bツリークラスタ索引」「ハッシュ・クラスタ索引」「逆キー索引」「ビットマップ索引」「ビットマップ結合索引」「ファンクション索引」「ドメイン索引」などです。表に新たな索引を作成しても、アプリケーションから発行するSQL文を変更する必要はありません。また、索引のメンテナンスはOracleが自動で行います。(SQLの表記ルールは、こちらから参照できます)
索引を確認する | |
SELECT
* FROM dba_indexes; |
|
┗ | 索引の定義を確認するには、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 |
|
┗ | 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 |
|
┗ | クラスタ索引を作成するには、CREATE
INDEX文で索引名(index)を指定し、ON CLUSTER句に続けて索引を作成するクラスタ名(cluster)を指定します。 TABLESPACE句 TABLESPACE句を使って索引を格納する表領域(tablespace)を指定できます。省略すると索引を定義しようとしているスキーマ所有者のデフォルト表領域に作成されます。ローカル索引の場合は、表領域(tablespace)の代わりにDEFAULTキーワードを指定できます。 |
関連項目:索引を削除する |
ビットマップ索引を作成する | |
CREATE
BITMAP INDEX [schema.] index ON [schema.] table |
|
┗ | ビットマップ索引を作成するには、CREATE
BITMAP INDEX文で索引名(index)を指定し、ON句に続けて索引を作成する表名(table)、列名(column)を指定します。列は最大30個まで指定が可能です。ビットマップ索引の作成では、UNIQUEは指定できません。 TABLESPACE句 TABLESPACE句を使って索引を格納する表領域(tablespace)を指定できます。省略すると索引を定義しようとしているスキーマ所有者のデフォルト表領域に作成されます。ローカル索引の場合は、表領域(tablespace)の代わりにDEFAULTキーワードを指定できます。 |
関連項目:索引を削除する |
ファンクション索引を作成する | |
CREATE
[UNIQUE] INDEX [schema.] index ON [schema.] table |
|
┗ | ファンクション索引を作成するには、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 |
|
┗ | 逆キー索引を作成するには、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関連記事リンク集 | |
Database Expert フォーラム 新着記事
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|