インデックスとは / インデックスの利用


インデックスとは

インデックスとは、データの検索速度を向上させるために、どの行がどこにあるかを示した索引のことです。

データを検索するときに、目的のデータが見つかるまですべての行を一行ずつ調べていくよりも、索引を利用して目的の行の場所を見つけてからその行のデータを読み取る方が効率的だという考えにより、非常によく用いられる方法です。

特に大きなテーブルでは、インデックスを用いることにより、大幅にそのパフォーマンスが改善されます。

インデックスの基本構文

インデックスの概念についてSQLの標準技術ではないので定義されていません。
ここでは ORACLE と PostgreSQL について個別に記述しておきます。

インデックスの作成

ORACLE

CREATE [UNIQUE] INDEX インデックス名
        ON テーブル名(列名 [ ASC | DESC ],...) ;

PostgreSQL

CREATE [UNIQUE] INDEX インデックス名
        ON テーブル名(列名,...) ;

UNIQUE を指定すると、対象となる列の値に重複が許されなくなります。

また、ORACLE では列名の後に ASC を指定すると昇順に、DESC を指定すると降順にインデックスが作成されます。
指定しない場合は昇順になります。

インデックスの削除

定義したインデックスを削除する場合には、ORACLE も PostgreSQL ともに、次の DROP INDEX 文を使用します。

DROP INDEX インデックス名 ;

インデックスの利用

インデックスは、データ検索のパフォーマンスを改善するために利用されるものです。
しかし、その利用の仕方が悪いと返ってパフォーマンスを低下させてしまうこともあります。

インデックスを効率よく利用するために、次の点に注意する必要があります。

  • パフォーマンス向上
       1.表の結合条件に使用される列に対してインデックスを作成するとパフォーマンスが向上する。
       2.値の分布が大きな列に対してインデックスを作成するとパフォーマンスが向上する。値の分布が大きいとは、異なる値が多いということである。
  • パフォーマンス低下
       1.値の分布が小さな列に対してインデックスを作成するとパフォーマンスが低下する。
       2. テーブルを更新すると、インデックスも更新される。従って、テーブルが頻繁に更新されるような場合にインデックスを利用するとパフォーマンスは低下する。
  • その他
       1. インデックスは表のデータとは別の領域に保存されるので、データベース設計時にはインデックスの領域も見込まなければならない。
       2. インデックスは表のデータに対して作成するもので、ビューのデータに対しては作成することができない。
          ただし、ビューに対してデータの検索を行う場合は、元のテーブルに作成されたインデックスが利用される。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


+ 7 = 8

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>