インデックスとは?インデックス
インデックスとは、表の特定の列の値から目的の行の位置を素早く求めるための補助的なデータ構造。検索を速くする代わりに、更新のたびに索引側も維持する必要があり、記憶領域も余分に要る。関係データベースではB+木索引が既定で、値の範囲検索やソートの省略にも効くが、ハッシュ索引やビットマップ索引など用途の違う種類もある。
最終更新:2026-10-06
この語が出る過去問を解く →背景
索引が無ければ、DBMSは条件に合う1行を探すのに表を先頭から全部読むしかない。数百万行の表では1件の照会でディスクを何万ブロックも読むことになり、オンライン処理の応答時間に収まらない。値の並びだけを別構造に取り出して木でたどれるようにすれば、読むブロック数は木の高さぶんに縮む。試験では、索引を「作るか作らないか」ではなく「どの列にどの種類を作るか」という設計判断として問われる。
具体例
PostgreSQLで CREATE INDEX ON 受注(顧客コード) とすると、顧客ごとの受注照会が全表走査からB+木の探索に変わる。一方で列の値の種類が2〜3種しかない性別のような列では、索引をたどるより全表を読むほうが速いと判断されて使われないことがある。
試験での引っ掛け
更新・挿入が多い列に索引を多数作ると、維持コストで全体の性能がかえって落ちる。また列に関数や演算を適用した条件(WHERE SUBSTR(コード,1,3)='ABC')や、前方一致でないLIKEでは索引が使われない。複合索引は先頭列を条件に含まないと効かない点も定番。
関連用語
出た過去問
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA)
B+木インデックスとビットマップインデックスを比較した説明のうち、適切なものはどれか。
正解:少数の異なる値をもつ列への検索は、ビットマップインデックスの方が有効である。
要点:値の種類が少ない列にはビットマップインデックスが有効
ビットマップインデックスは、列がとり得る値ごとに行の該当有無をビット列で表す方式である。値の種類(カーディナリティ)が少ないほどビット列の本数が少なく済んで効率がよく、性別や区分コードのような列に向いている。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問4(IPA)
B+木インデックスが定義されている候補キーを利用して、1件のデータを検索するとき、データ総件数Xに対するB+木インデックスを格納するノードへのアクセス回数のオー…
正解:log X
要点:B+木の探索は木の高さ分、つまり対数オーダー
B+木は根から葉へ向かって多分岐でたどる平衡木で、木の高さはデータ件数の対数に比例する。検索は根から葉まで1経路をたどるだけなので、アクセス回数のオーダーは件数の対数になる。よってイが正しい。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13(IPA)
"部品"表のメーカーコード列に対し、B+木インデックスを作成した。これによって、"部品"表の検索の性能改善が最も期待できる操作はどれか。ここで、部品及びメーカー…
正解:メーカーコードの値が4001以上、4003以下の部品を検索する。
要点:B+木索引が効くのは値の順序を活かせる範囲検索
B+木は葉ノードがキー値の順に並んでいるため、範囲の下限を索引で探し当てた後は葉をたどるだけで該当行を集められる。一方、否定条件やNULL以外といった条件は対象がほぼ全件に及ぶので、索引を経由するより表を直接走査したほうが速く、性能改善は期待できない。よってウが最も効果を見込める。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問3(IPA)
関係データベースのテーブルにレコードを1件追加したところ、インデックスとして使う、B+木のリーフノードCがノードC1とC2に分割された。ノード分割後のB+木構造…
正解:選択肢イ:AがB,C1,C2,Dの4ノードを指し、B↔C1↔C2↔Dの順で連結。
要点:リーフ分割後も2つとも親直下、リーフ列はキー順連結
B+木でリーフがあふれて分割されると、分割後の2つのリーフはどちらも親(中間ノード)から直接ポインタで参照される。親に空きがある前提なので、親へキーとポインタを1つ追加するだけで済み、それ以上は上位へ波及しない。またB+木のリーフはキー順の双方向リストでつながっているため、分割後もキーの順序どおりに前後のリーフと連結し直される。この2条件を同時に満たす構造が正解となる。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問4(IPA)
転置インデックスに関する記述として、適切なものはどれか。
正解:テキストに含まれる単語に対して、その単語を含むテキストへのポインタをインデックスとして使用する。
要点:転置インデックスは単語から文書を引くための索引
転置インデックスは全文検索で使われる索引で、文書に出現する単語を見出し語とし、その語を含む文書(および出現位置)へのポインタを並べた構造をとる。文書から単語を引く通常の並びを逆にしているので「転置」と呼ぶ。これにより、語を指定して該当文書を一発で絞り込める。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。