Hitachi

ノンストップデータベース HiRDB Version 9 パフォーマンスガイド


3.4.4 MERGE JOINの対策

〈この項の構成〉

(1) MERGE JOINとは

MERGE JOINは,結合列でソートして,結合列の値が小さいものから順に突き合わせるため,効率が悪いです。MERGE JOINの中でも,SORT MERGE JOINは,結合するそれぞれの表から行を取り出す際に,作業表を作成しソートするため,特に処理効率が悪いです。

図3‒21 SORT MERGE JOINの処理方式

[図データ]

(2) 確認方法

MERGE JOINの確認方法を次に示します。

(3) 対策方法

SQL文のヒット件数が少ない場合はNESTED LOOPS JOIN,SQL文のヒット件数が多い場合はHASH JOINに変更します。それぞれの結合方法への変更方法を次に説明します。

[図データ][NESTED LOOPS JOINにするには]

結合方法をNESTED LOOPS JOINにするときの手順を次に示します。

  1. 内表の結合条件の列にインデクスを定義してください。この時,インデクス構成列には,結合条件の列をすべて含めてください。内表の結合条件の列は,アクセスパス情報の「結合条件(JoinCnd)」に表示された「内表名(R Table)」の列になります。

  2. SQL文のSQL最適化指定で結合方式(BY NEST)を指定します。指定方法は,マニュアル「HiRDB Version 9 SQLリファレンス」の「結合方式のSQL最適化指定」を参照してください。

[図データ][こんなときは]

上記の手順を実施しても,NESTED LOOPS JOINに変更できない場合は,次の変更を実施してください。

  • 外表に結合条件以外の探索条件が指定できないか検討してください。

  • HiRDB/パラレルサーバで,内表を横分割している場合は,分割キーを結合条件にいれてください。

[図データ][HASH JOINにするには]

結合方法をHASH JOINにするときの手順を次に示します。

  1. HASH JOINを実行できる環境設定をします。詳細は,マニュアル「HiRDB Version 9 UAP開発ガイド」の「ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備」を参照してください。

  2. SQL文のSQL最適化指定で結合方式(BY HASH)を指定します。指定方法は,マニュアル「HiRDB Version 9 SQLリファレンス」の「結合方式のSQL最適化指定」を参照してください。