3.4.7 NESTED LOOPS WORK TABLE SUBQの対策
(1) NESTED LOOPS WORK TABLE SUBQとは
NESTED LOOPS WORK TABLE SUBQとは,限定述語およびIN述語に対する表副問合せに適用されるアクセスパスです。外側の問合せを1行取り出すごとに外への参照列の値を使用して副問合せを実行し,副問合せの選択式の値を求めて作業表を作成します(図中の1)。そして,副問合せから作成した作業表と突き合わせて,外側の副問合せを含む条件を評価します(図中の2)。このため,処理効率が悪いです。
(2) 確認方法
NESTED LOOPS WORK TABLE SUBQの確認方法を次に示します。
-
HiRDB SQL Tuning Advisorの場合
アクセスパス情報の「副問合せ実行方式」に「NESTED LOOPS WORK TABLE SUBQ」と表示されます。NESTED LOOPS WORK TABLE SUBQの出力例を次に示します。
図3‒37 HiRDB SQL Tuning Advisorの出力例 -
UAP統計レポートの場合
アクセスパス情報の「Sub Query Type」に「NESTED LOOPS WORK TABLE SUBQ」と表示されます。NESTED LOOPS WORK TABLE SUBQの出力例を次に示します。
図3‒38 UAP統計レポートの出力例
(3) 対策方法
EXISTS述語を使ったSQL文に変更して,副問合せの実行方式をNESTED LOOPS ROW VALUE SUBQに変更します。これによって,作業表を使用しないため処理効率が良くなります。
変更方法の例は,「WORK TABLE SUBQの対策」の表「NESTED LOOPS ROW VALUE SUBQへの変更例」を参照してください。