3.4.4 MERGE JOINの対策
- 〈この項の構成〉
(1) MERGE JOINとは
MERGE JOINは,結合列でソートして,結合列の値が小さいものから順に突き合わせるため,効率が悪いです。MERGE JOINの中でも,SORT MERGE JOINは,結合するそれぞれの表から行を取り出す際に,作業表を作成しソートするため,特に処理効率が悪いです。
(2) 確認方法
MERGE JOINの確認方法を次に示します。
-
HiRDB SQL Tuning Advisorの場合
アクセスパス情報の「結合方法」に「MERGE JOIN」と表示されます。
SORT MERGE JOINの出力例を次に示します。
図3‒22 HiRDB SQL Tuning Advisorの出力例(SORT MERGE JOIN) -
UAP統計レポートの場合
アクセスパス情報の「Join Type」に「MERGE JOIN」と表示されます。
SORT MERGE JOINの出力例を次に示します。
図3‒23 UAP統計レポートの出力例(SORT MERGE JOIN)
(3) 対策方法
SQL文のヒット件数が少ない場合はNESTED LOOPS JOIN,SQL文のヒット件数が多い場合はHASH JOINに変更します。それぞれの結合方法への変更方法を次に説明します。
- [NESTED LOOPS JOINにするには]
-
結合方法をNESTED LOOPS JOINにするときの手順を次に示します。
-
内表の結合条件の列にインデクスを定義してください。この時,インデクス構成列には,結合条件の列をすべて含めてください。内表の結合条件の列は,アクセスパス情報の「結合条件(JoinCnd)」に表示された「内表名(R Table)」の列になります。
-
SQL文のSQL最適化指定で結合方式(BY NEST)を指定します。指定方法は,マニュアル「HiRDB SQLリファレンス」の「結合方式のSQL最適化指定」を参照してください。
-
- [こんなときは]
-
上記の手順を実施しても,NESTED LOOPS JOINに変更できない場合は,次の変更を実施してください。
-
外表に結合条件以外の探索条件が指定できないか検討してください。
-
HiRDB/パラレルサーバで,内表を横分割している場合は,分割キーを結合条件にいれてください。
-
- [HASH JOINにするには]
-
結合方法をHASH JOINにするときの手順を次に示します。
-
HASH JOINを実行できる環境設定をします。詳細は,マニュアル「HiRDB UAP開発ガイド」の「ハッシュジョイン,副問合せのハッシュ実行を適用する場合の準備」を参照してください。
-
SQL文のSQL最適化指定で結合方式(BY HASH)を指定します。指定方法は,マニュアル「HiRDB SQLリファレンス」の「結合方式のSQL最適化指定」を参照してください。
-