この記事では索引について解説します。
索引とは
索引とはテーブルのデータへ高速にアクセスするためのオブジェクトです。
インデックスと呼ばれることも多いです。
一般的にSQLの処理に時間がかかる処理はディスクへのアクセスになります。
そのため、高速でデータへアクセスするためには効率的にディスクへアクセスする(ディスクの読み込み回数を減らす)ことが大切です。
しかし、テーブルに格納されているデータはソートされていないため、どこにどのデータがあるかわかりません。
索引にはデータの位置を特定し、少ないアクセスでデータを検索できるような仕組みが作られています。
索引を使うことによって効率的にディスクへアクセスでき、データへの高速アクセスを実現しています。
索引の種類
Oracle Databaseでは下記の種類の索引が使用できます。
・Bツリー索引
木構造のインデックスです。
Oracle Databaseではデフォルトで使用されます。
カーディナリティ(選択性)が高い列に有効な索引です。
・ビットマップ索引
キー値とROWIDを関連付けたビットマップを利用する索引です。
カーディナリティ(選択性)が低い列に有効な索引です。
・パーティション索引
パーティション化した索引です。
・ファンクション索引
関数によって返される値に対して作成できる索引です。
・ドメイン索引
アプリケーションなどの特区帝のドメインに向けて作る索引です。
索引のメリット・デメリット
索引の使用にはメリット・デメリットが存在します。
むやみに索引を作成せずに必要な索引のみを作成することが大切です。
メリット
・検索速度が向上する
デメリット
・データの挿入や更新時に索引の変更のため処理速度が低下する。
・データ件数が少ない場合は効果を発揮できない。