Hitachi

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


3.4.5 効率の悪いNESTED LOOPS JOINの対策

〈この項の構成〉

(1) 効率の悪いNESTED LOOPS JOINとは

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

内表のインデクスを利用して結合条件を評価することで,処理効率が良くなります。しかし,結合条件のすべての列がインデクスに含まれていない場合,結合条件の評価がインデクスだけでは判定できず,表データとの突合せが発生するため,処理効率が悪いです。

図3‒24 NESTED LOOPS JOINの処理方式

[図データ]

[図データ]

(2) 確認方法

効率の悪いNESTED LOOPS JOINの確認方法を次に示します。

(3) 対策方法

内表に定義するインデクスは,結合条件となる列をすべて構成列に含めてください。「ロー条件(RowCnd)」または「IF THEN条件(IfThenCnd)」の行に表示されている内表の列をインデクス構成列に加えることで対策できます。この時,最も絞り込める探索条件を指定している列を,第1構成列にしてください。対策方法の例を次に示します。

図3‒27 対策方法の例(HiRDB SQL Tuning Advisorの場合)

[図データ]

図3‒28 対策方法の例(UAP統計レポートの場合)

[図データ]