LoginSignup
0

More than 3 years have passed since last update.

大雑把すぎるインデックスの説明

Posted at

概要

  • ここで言うインデックスとは、RDBMSのインデックスのことです。
  • データベースが初めての方にも理解しやすいよう、できるだけ平易な言葉と身近な例えで表現してみました。

インデックスとはなんぞや?

電話帳からある人の電話番号を探すとき、名前の50音順で整理されたものから探すのと、無秩序に並んだものから探すのでは、明らかに前者が速く目的の番号を見つけることができますよね。この「50音順に整理しておく」がインデックスに当たります。インデックスを作成することを、インデックスを「張る」とも言います。

インデックスが使用されるには条件がある

先ほどの電話帳の例だと、名前が「さ」で始まる人を列挙する場合はインデックスが有効ですが、名前の途中や最後に「さ」が付く人を列挙する場合は、結局、全部を探さなければなりません。

  • kana LIKE 'さ%' 速い :thumbsup:
  • kana LIKE '%さ%' 遅い
  • kana LIKE '%さ' 遅い

インデックスは張りすぎてもダメ

あなたが電話帳を管理する係だとします。名前の50音順だけでなく、電話番号順や、住所順でも探しやすくするため、それぞれにインデックスを用意しなければならなくなったら、新しい連絡先を追加する作業は確実に遅くなりますよね。
インデックス増やすほど、挿入、更新、削除の操作は遅くなります。

1年に1回しか更新されないテーブルなら、検索の速さを重視してたくさんインデックスを張る。5分に1回挿入があるようなテーブルなら、より注意深く、厳選してインデックスを張る。のようにバランスが大切ということになります。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0