入れ子ループ結合とは?いれこループけつごう
入れ子ループ結合とは、外側の表を1行ずつ読み、その1行ごとに内側の表を走査して結合条件に合う行を探す結合方式。作業用の領域をほとんど必要とせず、外側が小さく内側の結合列に索引があるときに最も速い。結合方式の既定として多くのDBMSが備える。
最終更新:2026-10-06
この語が出る過去問を解く →背景
結合はSQLの中で最も費用のかかる操作なので、DBMSは入れ子ループ・ソートマージ・ハッシュの3方式から統計情報を見て選ぶ。入れ子ループはメモリを使わず先頭の行を早く返せる代わりに、内側を繰り返し走査する構造上、件数が増えると急激に不利になる。遅い問合せを直す場面では、実行計画にどの方式が出ているかを読み、想定と違うなら統計情報や索引を疑うことになる。
具体例
受注1,000件に対して受注明細を結合するとき、受注明細の受注番号に索引があれば、外側1行ごとに索引を1回引くだけで済む。PostgreSQLのEXPLAINではNested Loop、Oracle DatabaseではNESTED LOOPSと実行計画に表示される。
試験での引っ掛け
内側に索引が無いと総当たりになり、件数の積に比例する計算量(nの2乗オーダー)に落ちる。この状況では、大量件数どうしを一括で突き合わせるハッシュ結合やソートマージ結合のほうが速い。「入れ子ループが常に遅い/速い」ではなく、外側の件数と内側の索引の有無で優劣が入れ替わる点が問われる。
関連用語
出た過去問
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問19(IPA)解説で登場
関係データベースにおいて、タプル数nの表二つに対する結合操作を、入れ子ループ法によって実行する場合の計算量はどれか。
正解:O(n^2)
要点:入れ子ループ結合は総当たりでO(n^2)
入れ子ループ法は外側の表の各行について内側の表を全件走査して突き合わせる方式である。どちらの表もタプル数がnなら、比較回数はn×nに比例するので計算量はO(n^2)となる。索引が使える場合は内側の走査を減らせるが、単純な入れ子ループでは総当たりになる。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問16(IPA)解説で登場
関係データベースにおいて、タプル数nの表二つに対する結合操作を、入れ子ループ法によって実行する場合の計算量はどれか。
正解:O(n²)
要点:入れ子ループ結合は総当たりでO(n^2)
入れ子ループ法は外側の表の各行に対して内側の表を全件走査して突き合わせる。両方の表のタプル数がnであれば比較回数はn×nに比例するので、計算量はO(n^2)になる。索引が使える場合を除き、単純な総当たりになる点が特徴である。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA)解説で登場
関係データベースにおいて、タプル数nの表二つに対する結合操作を、入れ子ループ法によって実行する場合の計算量はどれか。
正解:O(n^2)
要点:入れ子ループ結合の計算量はnの2乗オーダー
入れ子ループ法は、外側の表の1行ごとに内側の表を全走査して結合条件を確かめる方式である。どちらもn行なら比較回数はn×nに比例するので、計算量はnの2乗のオーダーになる。よってエが正しい。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。