【いんでっくす】
インデックス(DB) とは?
最終更新:
💡 探す手がかりを用意する、DBの索引
テーブルの行を探しやすくする補助的なデータ構造。本の索引に似た役割があり、検索の条件や件数によって有効性が変わり、保存領域と更新の負担も必要です。
📌 このページのポイント
- 値などを手がかりに、目的の行を探しやすくする
- B-treeなどの種類があり、得意な検索条件が異なる
- 索引を作っても、DBが使うとは限らない
- 保存領域と更新の負担も考え、実行計画で効果を確認する
索引があると、何が変わるの?
全ての行を調べる代わりに、索引から条件に合う行の場所を探せる場合があるよ。例えば商品番号42で商品を探すときの手がかりを用意するイメージ。CREATE INDEXで作成でき、DBが内容を更新してくれるんだ。
作れば、必ず速くなるの?
そうとは限らないよ。表が小さい、たくさんの行を返すなどの場合、全体を順に読む方が効率的なこともある。DBは統計などを基に実行方法を選ぶ。何秒になるかも、件数・条件・機器などで変わるんだ。
全部の列に作った方がよい?
索引も保存領域を使い、データ更新に合わせて保つ負担があるよ。よく使う検索や結合、並べ替えの条件を見て検討しよう。B-treeなど種類ごとに得意な条件も違うから、単に数を増やせばよいわけではないんだ。
使われているか、どう調べるの?
まとめ:ざっくりこれだけ覚えればOK!
「DBのインデックス」って出てきたら「データの行を探しやすくする索引」と思えばだいたいOK!
📖 おまけ:英語の意味
「Index」 = 索引
💬 本の索引が語句から掲載ページへ案内するように、DBでは値などから行を探す手がかりを用意します。実際のデータ構造や検索の仕方は索引の種類によって異なります。