リレーショナルデータベースでは、基本的にはレコードを上から順に検索して取得していきます。そのためレコードが何万何十万と積み重なると、後ろに追加されたレコードの検索が遅くなることが考えられます。それを避けるために作られたのが、インデックスです。 インデックスを作ることで、効率的に取得したいレコードを取得することができるようになります。つまりレコードを検索するのに必須なのではなく、検索結果を速く取得したい場合に利用されます。

RDBのインデックスとは

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2019年06月21日

リレーショナルデータベースでは、基本的にはレコードを上から順に検索して取得していきます。そのためレコードが何万何十万と積み重なると、後ろに追加されたレコードの検索が遅くなることが考えられます。それを避けるために作られたのが、インデックスです。

インデックスを作ることで、効率的に取得したいレコードを取得することができるようになります。つまりレコードを検索するのに必須なのではなく、検索結果を速く取得したい場合に利用されます

インデックスのデメリット

インデックス自体には検索結果を早くするというメリットがありますが、メリットだけではありません。いくつかのデメリットを把握して、上手に扱っていく必要があります。

デメリットとしては以下のようなものがあります。

  • インデックス自体に容量が必要
    インデックスを作成すると、それ専用のデータ領域が必要になります。
  • レコード挿入時や更新時にインデックスの登録も必要なため、インデックスなしのテーブルよりもレコード挿入や更新に時間がかかる
    レコード追加時や更新時にインデックスも追加・更新が必要なため、その作業自体の時間を要します。時間的には微々たるものですが、インデックスをたくさん作っていると、それだけ時間もかかります。
  • テーブルのレコードが少ないときは、検索が必ずしも速くならない
    インデックスは主にレコードが多いテーブルにおいて速く検索するために利用されるものです。テーブル自体のレコード数が少ない場合には検索が速くならないことがあります。