索引(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コマンドでも削除できません。主キーまたは一意制約を無効化した後に削除する必要があります。
|
スポンサードリンク
|