Hitachi

Hitachi Advanced Data Binder SQLリファレンス


7.13.1 結合方式指定の指定形式および規則

結合表に指定した表参照の結合方式を指定します。結合方式については,マニュアルHADB AP開発ガイド表の結合方式を参照してください。

通常は,結合方式指定を指定する必要はありません。結合方式指定を指定しない場合,HADBが自動的に結合方式を決定します。

〈この項の構成〉

(1) 指定形式

結合方式指定::=/*>> BY {NEST|HASH} 〔({LEFT|RIGHT} FIRST)〕 <<*/

(2) 指定形式の説明

BY {NEST|HASH}:
NEST:

結合方式をネストループジョインとする場合に指定します。

HASH:

結合方式をハッシュジョインとする場合に指定します。

({LEFT|RIGHT} FIRST):
LEFT FIRST

結合表の左側に指定した表参照を外表として結合する場合に指定します。

RIGHT FIRST

結合表の右側に指定した表参照を外表として結合する場合に指定します。

LEFT FIRSTまたはRIGHT FIRSTを省略した場合,結合表に指定したどちらの表参照を外表にするかはHADBが自動的に決定します。

結合方式指定が適用されたかどうかは,アクセスパス情報で確認できます。確認方法については,マニュアルHADB AP開発ガイドツリー表示に出力される情報表の結合方式を参照してください。

(3) 規則

  1. HADBが実行できない結合方式が指定された場合,結合方式指定は無効になります。結合方式指定が無効になった場合,HADBが自動的に結合方式を決定します。

  2. /*>>」と「<<*/」で囲んだ文字列は注釈にはなりません。結合方式指定以外で指定するとエラーになります。

(4) 例題

例題1
SELECT * FROM "T1" INNER JOIN /*>>BY NEST<<*/ "T2"
                   ON "T1"."C1"="T2"."C1"

下線部分が結合方式指定です。

上記のSELECT文を実行した場合,表T1と表T2の結合方式がネストループジョインになります。外表,内表はHADBが自動的に決定します。

例題2
SELECT * FROM "T1" INNER JOIN /*>>BY NEST (LEFT FIRST)<<*/ "T2"
                   ON "T1"."C1"="T2"."C1"

下線部分が結合方式指定です。

上記のSELECT文を実行した場合,表T1と表T2の結合方式がネストループジョインになります。表T1が外表,表T2が内表になります。

例題3
SELECT * FROM "T1" INNER JOIN /*>>BY NEST (RIGHT FIRST)<<*/ "T2"
                   ON "T1"."C1"="T2"."C1"

下線部分が結合方式指定です。

上記のSELECT文を実行した場合,表T1と表T2の結合方式がネストループジョインになります。表T2が外表,表T1が内表になります。

例題4
SELECT * FROM "T1" INNER JOIN /*>>BY HASH<<*/ "T2"
                   ON "T1"."C1"="T2"."C1"

下線部分が結合方式指定です。

上記のSELECT文を実行した場合,表T1と表T2の結合方式がハッシュジョインになります。外表,内表はHADBが自動的に決定します。

例題5
SELECT * FROM "T1" INNER JOIN /*>>BY HASH (LEFT FIRST)<<*/ "T2"
                   ON "T1"."C1"="T2"."C1"

下線部分が結合方式指定です。

上記のSELECT文を実行した場合,表T1と表T2の結合方式がハッシュジョインになります。表T1が外表,表T2が内表になります。

例題6
SELECT * FROM "T1" INNER JOIN /*>>BY HASH (RIGHT FIRST)<<*/ "T2"
                   ON "T1"."C1"="T2"."C1"

下線部分が結合方式指定です。

上記のSELECT文を実行した場合,表T1と表T2の結合方式がハッシュジョインになります。表T2が外表,表T1が内表になります。