複合インデックスとは?ふくごういんでっくす
複合インデックスとは、複数の列を指定した順に連結した値をキーとする索引。B+木は先頭列から順に整列するので、先頭列を含まない条件では探索の起点が決まらず使えない。等価条件で使う列を前、範囲条件で使う列を後ろに置くのが原則で、この列順を決めること自体が物理設計の判断になる。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
条件ごとに単一列の索引を並べる設計では、二つの条件を組み合わせた検索でDBMSが片方の索引しか使えず、そこで絞った行を一件ずつ表本体から読んで残りの条件を確かめることになる。絞り込みの効きが弱い列の索引を選ばれると、かえって遅くなる。複数の条件をひとつの並び順の中でまとめて絞るために複合索引がある。試験では、与えられたSQLの集合に対して列順を決めさせる形で問われる。
具体例
受注表1,000万行に(店舗コード, 受注日)の索引を張る。店舗が100店なら店舗コードだけでは10万行に絞られるが、受注日の範囲を足すと数百行に落ちる。列順を(受注日, 店舗コード)に逆にすると、日付を指定しない店舗別の照会では先頭列が条件に無く、索引が使えない。
試験での引っ掛け
列を増やすほど効くわけではない。キーが長くなるほど索引のページ数と更新コストが増える。範囲条件の列を先に置くと、その後ろの列は索引の中で整列していないため絞り込みに寄与しない。MySQLのInnoDBでは二次索引の末尾に主キーが暗黙に連結される点も併せて押さえる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。