インデックス(索引)とは?いんでっくす
インデックス(索引)とは、本の巻末索引のように、ある列の値から該当する行の場所へすぐ飛べるようにデータベースが別に持つ検索用の構造である。索引が無いと表の全行を先頭から順に調べる全表走査になるが、索引があればB木(B+木。枝分かれの多い木の形のデータ構造)をたどって数回の比較で行に到達できる。範囲検索や並べ替えにも効く一方、行を追加・更新するたびに索引側も更新される。
最終更新:2026-10-09
基本情報を最短で暗記・合格する →背景
表が数百行なら全部読んでも一瞬だが、会員1,000万人の表から1人を探すたびに全行を読んでいては応答が秒単位に伸びる。だからよく検索される列だけ索引を用意し、読む量を減らす。ただし索引はデータの写しなので、書き込みのたびに二重に更新する手間と容量を払う。FEではこの読みと書きのトレードオフと、索引が効かない列の見分けが出題される。
具体例
大学の学務システムで学籍番号にインデックスを張ると、10万人の表でも学籍番号指定の検索は十数回の比較で済む。逆に「性別」列は値が2種類しかなく、索引を引いても半分の行が残るので効果が薄い。MySQLならCREATE INDEX文(索引を作るSQLの命令)で作り、EXPLAIN文(命令の実行手順を表示する命令)で索引が使われたかを確かめられる。
試験での引っ掛け
「索引を張れば何でも速くなる」が引っ掛け。値の種類が少ない列(性別・都道府県)や行数の少ない表では効かず、INSERT・UPDATE・DELETE(行の追加・更新・削除を行うSQLの命令)はむしろ遅くなる。また主キーには多くのDBMSが自動で索引を作るので、追加で張る対象は検索条件によく使う別の列である。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。