スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(Windows(R)用)

[目次][索引][前へ][次へ]

17.5.6 結合方法の種類

編集結果のLは外表,Rは内表を表しています。結合方式については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

<この項の構成>
(1) マージジョイン
(2) ネストループジョイン
(3) ハッシュジョイン
(4) SELECT-APSL
(5) 分散ネストループジョイン
(6) 直積

(1) マージジョイン

マージジョインは,外表を余り絞り込めないときに有効です。

SORT MERGE JOIN
外表と内表から行を取り出して,それぞれ作業表を作成しソートします。その後,結合条件を満たした行同士を結合します。

KEY SCAN MERGE JOIN
外表と内表から,KEY SCANで行を取り出します。その後,結合条件を満たした行同士を結合します。

LIST SCAN MERGE JOIN
外表と内表から作業表を作成し,ソートはしないで結合列の昇順に行を取り出します。その後,結合条件を満たした行同士を結合します。

L-KEY R-LIST MERGE JOIN
外表はKEY SCANで行を取り出し,内表は作業表を作成し,ソートはしないで行を取り出します。その後,結合条件を満たした行同士を結合します。

L-KEY R-SORT MERGE JOIN〔pdvwopt〕
外表はKEY SCANで行を取り出し,内表は作業表を作成し,ソートをして行を取り出します。その後,結合条件を満たした行同士を結合します。

L-LIST R-KEY MERGE JOIN
外表は作業表を作成し,ソートはしないで行を取り出し,内表はKEY SCANで行を取り出します。その後,結合条件を満たした行同士を結合します。

L-LIST R-SORT MERGE JOIN
外表は作業表を作成し,ソートはしないで行を取り出し,内表は作業表を作成し,ソートをして行を取り出します。その後,結合条件を満たした行同士を結合します。

L-SORT R-KEY MERGE JOIN
外表は作業表を作成し,ソートをして行を取り出し,内表はKEY SCANで行を取り出します。その後,結合条件を満たした行同士を結合します。

L-SORT R-LIST MERGE JOIN
外表は作業表を作成し,ソートをして行を取り出し,内表は作業表を作成し,ソートをしないで行を取り出します。その後,結合条件を満たした行同士を結合します。

(2) ネストループジョイン

ネストループジョインは,内表にインデクスが定義されていて,外表をかなり絞り込めるときに有効です。

NESTED LOOPS JOIN
外表から1行ずつ行を取り出し,内表のそれぞれの行に突き合わせて,結合条件を満たす行を取り出す入れ子型のループ処理をする結合方法です。

R-LIST NESTED LOOPS JOIN
内表から行を取り出して作業表を作成します。その後,外表から1行ずつ行を取り出して,それぞれの行に対して内表から作成した作業表を突き合わせ,結合条件を満たす行を取り出す入れ子型のループ処理をする結合方法です。

(3) ハッシュジョイン

HASH JOIN{FOR EACH}
あらかじめ内表の結合列の値でハッシングしてハッシュ表を作成しておいて,外表を1行取り出すごとに外表の結合列の値でハッシングして,内表から作成しておいたハッシュ表と突き合わせて結合します。

(4) SELECT-APSL

SELECT-APSLは,SQL実行時に結合方法を動的に決定する方式です。

SELECT-APSL(HiRDB/パラレルサーバの場合だけ)
条件に?パラメタを含んでいる場合,?パラメタの値によって最適な結合方法が変わることがあります。また,SQL最適化処理時に?パラメタの値が決まらないため,最適な結合方法が決定できません。そのため,SQL実行時にヒット率を計算して結合方法を決定します。

(5) 分散ネストループジョイン

外部表が内表となる場合に,ネストループジョインで結合する方法です。

DISTRIBUTED NESTED LOOPS JOIN
外表から行を取り出して,それぞれの行に対して内表となる外部表がある外部サーバに対して,外表の行の値を変数として渡したSQL文を実行して突き合わせることで,結合条件を満たす行を取り出す入れ子型のループ処理の結合をします。

(6) 直積

CROSS JOIN
外表のすべての行と,内表のすべての行をそれぞれ組み合わせて結合します。二つ以上の表にわたった条件があれば,結合した後に判定します。