データベーススペシャリスト試験 2021年 午前215


関係データベースにおいてタプル数nの表二つに対する結合操作を入れ子ループ法によって実行する場合の計算量はどれか。
O(logn)O(\log n)
O(n)O(n)
O(nlogn)O(n \log n)
O(n2)O(n^2)(正解)

解説

関係データベースの入れ子ループ結合の計算量【午前2 解説】

要点まとめ

  • 結論:入れ子ループ法による2つの表の結合は計算量がO(n2)O(n^2)となる。
  • 根拠:外側のループでnn回、内側のループでもnn回の比較が必要なため、総計n×n=n2n \times n = n^2回の操作が発生する。
  • 差がつくポイント:結合アルゴリズムの計算量を理解し、特に入れ子ループ法の非効率さを把握しているかが重要。

正解の理由

入れ子ループ法は、外側の表の各タプルに対して内側の表の全タプルを順に比較する単純な結合方法です。
表のタプル数がそれぞれnnの場合、外側ループでnn回、内側ループでnn回の比較が行われるため、計算量はO(n2)O(n^2)となります。
このため、選択肢の中でO(n2)O(n^2)である「エ」が正解です。

よくある誤解

入れ子ループ法の計算量をO(n)O(n)O(nlogn)O(n \log n)と誤認しやすいですが、単純な二重ループであるため二乗の計算量になります。
また、インデックスを利用した結合と混同してしまうことも多いです。

解法ステップ

  1. 入れ子ループ法の動作をイメージする(外側の表の各タプルに対し内側の表を全探索)。
  2. 外側の表のタプル数をnn、内側の表のタプル数もnnと仮定する。
  3. 外側ループでnn回、内側ループでnn回の比較が行われることを確認。
  4. 総比較回数はn×n=n2n \times n = n^2となり、計算量はO(n2)O(n^2)と判断。
  5. 選択肢の中からO(n2)O(n^2)を選ぶ。

選択肢別の誤答解説

  • ア: O(logn)O(\log n)
    → 二重ループの計算量を誤解。O(logn)O(\log n)は二分探索などの計算量であり、入れ子ループ法には該当しない。
  • イ: O(n)O(n)
    → 片方の表だけを走査する場合の計算量。入れ子ループ法は両方の表を全探索するため、これより大きい。
  • ウ: O(nlogn)O(n \log n)
    → ソートや効率的な結合アルゴリズムの計算量に近いが、単純な入れ子ループ法ではない。
  • エ: O(n2)O(n^2)
    → 入れ子ループ法の典型的な計算量で正解。

補足コラム

入れ子ループ法は最も単純な結合アルゴリズムですが、効率が悪いため大規模データには不向きです。
より効率的な結合方法としては、ソートマージ結合やハッシュ結合があり、これらは計算量をO(nlogn)O(n \log n)O(n)O(n)に抑えられます。
また、インデックスを利用した結合も計算量削減に有効です。

FAQ

Q: 入れ子ループ法はどんな場合に使われますか?
A: 小規模データやインデックスがない場合の単純な結合処理で使われますが、大規模データには非効率です。
Q: ソートマージ結合と入れ子ループ法の違いは?
A: ソートマージ結合は両方の表をソートしてからマージするため、計算量はO(nlogn)O(n \log n)程度で、入れ子ループ法より高速です。

関連キーワード: 関係データベース, 結合アルゴリズム, 入れ子ループ法, 計算量, データベース最適化
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ