インデックスとは?いんでっくす
インデックスとは、列の値と行の格納位置の対応を本体とは別に持ち、全行を読まずに目的の行へたどり着けるようにする補助構造。検索は速くなるが、行を追加・更新・削除するたびに索引側の保守が走るため、参照と更新のどちらが多い表かを見て張るかどうかを決める。B木型が代表で、値の種類が少ない列にはビットマップ型が向く。
最終更新:2026-10-07
この語が出る過去問を解く →背景
表が数十行なら全部読んでも一瞬だが、数百万行になると1件を取り出すためだけに全件を走査することになり、応答時間が桁で悪化する。かといって表そのものを並べ替えて保持すれば、1件の追加のたびに全体が動く。本体には手を触れず、探すための道しるべだけを別に持つ——という折衷が索引である。効く条件と効かない条件の判別が問われる。
具体例
PostgreSQLやMySQLではCREATE INDEX文で作り、EXPLAINを付けて実行計画を見れば索引が使われたかを確認できる。100万件の受注表で受注日に索引を張れば特定日の数十件を取り出す処理は劇的に速くなるが、値が2種類しかない性別の列に張っても大半の行が該当するため効果は出ない。
試験での引っ掛け
索引は多いほど良いのではなく、更新性能と記憶域を確実に削る。列に関数や演算を掛けた条件や、前方一致でない曖昧検索(LIKE '%東京%')では使われないことが多い点も狙われる。なおコンピュータ構成要素の分野に出る指標レジスタ(インデックスレジスタ)は、同じ語だが別物である。
関連用語
出た過去問
出典:平成30年度 春期 高度試験 午前Ⅰ 問8(IPA)
関係データベースのテーブルにレコードを1件追加したところ、インデックスとして使う、図のB+木のリーフノードCがノードC1とC2に分割された。ノード分割後のB+木…
正解:中間ノードAから、B、C1、C2、Dの4つのリーフノードへポインタが伸びる。リーフノード同士はB↔C1↔C2↔Dの順に双方向リンクでつながる。
要点:B+木の分割後もリーフは同じ深さでキー順にリンクされる
B+木ではすべてのリーフノードが同じ深さに置かれ、リーフは親ノードから直接ポインタで指される。リーフCが分割されてC1とC2になった場合、両方とも親である中間ノードAの直下に並び、キー値の順序どおりに B→C1→C2→D とリーフ同士が順次リンクされる。中間ノードAには空きがあるので木の高さは変わらない。
出典・参考
公式シラバスの2 コンピュータシステム > 3. ファイルシステム > (4) 検索手法に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。