概要
- ここで言うインデックスとは、RDBMSのインデックスのことです。
- データベースが初めての方にも理解しやすいよう、できるだけ平易な言葉と身近な例えで表現してみました。
インデックスとはなんぞや?
電話帳からある人の電話番号を探すとき、名前の50音順で整理されたものから探すのと、無秩序に並んだものから探すのでは、明らかに前者が速く目的の番号を見つけることができますよね。この「50音順に整理しておく」がインデックスに当たります。インデックスを作成することを、インデックスを「張る」とも言います。
インデックスが使用されるには条件がある
先ほどの電話帳の例だと、名前が「さ」で始まる人を列挙する場合はインデックスが有効ですが、名前の途中や最後に「さ」が付く人を列挙する場合は、結局、全部を探さなければなりません。
-
kana LIKE 'さ%'
速い -
kana LIKE '%さ%'
遅い -
kana LIKE '%さ'
遅い
インデックスは張りすぎてもダメ
あなたが電話帳を管理する係だとします。名前の50音順だけでなく、電話番号順や、住所順でも探しやすくするため、それぞれにインデックスを用意しなければならなくなったら、新しい連絡先を追加する作業は確実に遅くなりますよね。
インデックス増やすほど、挿入、更新、削除の操作は遅くなります。
1年に1回しか更新されないテーブルなら、検索の速さを重視してたくさんインデックスを張る。5分に1回挿入があるようなテーブルなら、より注意深く、厳選してインデックスを張る。のようにバランスが大切ということになります。