索引(INDEX)作成と管理

実践オラクルデータベース構築・運用

オラクルデータベース構築オラクルデータベース運用SQL書式PL/SQL書式Oracle Master試験

TOP SQL書式

索引(INDEX)作成と管理


スポンサードリンク
スポンサードリンク


索引(INDEX)作成と管理



1. 索引(INDEX)とは

RDB(リレーショナルデータベース)は、該当するデータを検索する際に、データ量が多いと検索に時間がかかってしまいます。すべての行を先頭から検索することを「全表走査」といいます。全表走査を実施しなくても検索が可能になるようにリレーショナルデータベースでは、書籍の目次と同様の働きを行う「索引(INDEX)」が準備されています。

Oracle Databaseの索引(INDEX)は、「B*Tree」とよばれる構造になっています。索引を作成するとデータの検索速度は向上しますが、データの挿入、更新、削除の処理では索引をメンテナンスする作業が発生し速度低下につながります。よって索引を作成する際は、最低限必要なものだけとします。


一般的な索引設計の指針をまとめたものは以下になります。

索引を作成すべき列の特徴

表から2〜4%程度のデータを検索する場合に使用する
列の値の種類が多い
WHERE句の条件として頻繁に検索する
NULL値が多く、NULL値以外を検索する


索引を作成すべきでない列の特徴

データ量の少ない表から検索する
列の値が頻繁に更新される
WHERE句の条件としてあまり使用されない





2. 索引作成(CREATE INDEX)

索引の作成には「CREATE INDEX」コマンドを使用します。
SQL> DESC TEST1
名前     NULL?   型
-------- -------- -----------------------
COL1           NUMBER
COL2           DATE
COL3           TIMESTAMP(6)

SQL> CREATE INDEX COL1_INDEX
2 ON TEST1(COL1);

索引が作成されました。

※自動で作成される索引(主キーと一意キー)の場合は、制約名が自動的にINDEX名となります。さらに表領域を指定するには「USING INDEX」で指定します。



3. 索引削除(DROP INDEX)

索引の削除には「DROP INDEX」コマンドを使用します。
SQL> DROP INDEX COL1_INDEX;

索引が削除されました。


※主キーまたは一意キーはの索引はDROP INDEXコマンドでも削除できません。主キーまたは一意制約を無効化した後に削除する必要があります。



スポンサードリンク

リンク集 / 免責事項サイトマップ問い合わせ
Copyright (C) 2012  実践オラクルデータベース構築・運用  All rights reserved