IPA過去問ドリル

平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18

テクノロジ/データベース

関係データベースにおいて,タプル数nの表二つに対する結合操作を入れ子ループ法によって実行する場合の計算量は幾らか。

出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18

正解:ウ

解説

入れ子ループ法(nested loop join)は,一方の表(外側の表)の各タプルについて,もう一方の表(内側の表)の全てのタプルを走査して結合条件を照合する結合アルゴリズムである。外側の表のタプル数がn,内側の表のタプル数もnである場合,外側の各タプルに対して内側のn個のタプルを走査する処理をn回繰り返すことになるため,比較回数(計算量)はn×n=n²のオーダーになる。

選択肢ごとの解説

  • 誤り。2nは,二つの表をそれぞれ1回ずつ走査する程度の線形の計算量であり,全ての組合せを総当たりで照合する入れ子ループ法の計算量としては小さすぎる。
  • 誤り。log nのオーダーは,索引を使った二分探索のような対数時間の処理に相当し,全件を総当たりで照合する入れ子ループ法の計算量には当てはまらない。
  • 正しい。入れ子ループ法では,一方の表のn個のタプルそれぞれについて,他方の表のn個のタプルを走査するため,計算量はn×n=n²のオーダーになる。
  • 誤り。n log nのオーダーは,各表をあらかじめソートしてから結合するマージジョイン法などに近い計算量であり,ソートを行わず総当たりで照合する入れ子ループ法の計算量とは異なる。
データベーススペシャリストの過去問を演習モードで解く