Hitachi

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


4.4.3 結合処理情報(JOIN)のLeftとRight

〈この項の構成〉

(1) 外表が絞り込めているか確認する

結合方法がNESTED LOOPS JOINの場合,先に検索する表(外表)から取り出した行の数だけ,もう一方の表(内表)を検索します。このため,取り出す行数の少ない方を外表にした方が,内表を検索する回数が少なくなります。結合処理情報では,外表の方が取り出した行数が少ないか確認します。外表から取り出した行数はLeftの値,内表から取り出した行数はRightの値になります。外表と内表から取り出す行数について,次に示します。

図4‒24 外表と内表から取り出す行数

[図データ]

(2) 確認方法

中間結果情報の中で「JOIN」と表示されている個所が,結合処理情報です。この下のLeftの値とRightの値を比べて,外表から取り出す件数が多くないか確認してください。アクセスパスと結合処理情報の出力例を次に示します。

図4‒25 結合処理情報の出力例

[図データ]

(3) 対策方法

対策方法を次に説明します。一方の方法だけで対策できない場合は,両方の対策を合わせて実施してください。

  1. 外表に,さらに絞り込める探索条件を追加してください。

  2. 内表の方が探索条件で絞り込める場合は,外表と内表を入れ替えてください。SQLの結合表の指定(JOIN)を使って,外表と内表を明示的に指定することで対策できます。

[図データ][注意事項]

内表と外表を入れ替える場合は,内表に結合条件を評価できるインデクスを定義してください。詳細は,「NESTED LOOPS JOINにするには」を参照してください。

内表と外表を入れ替えて対策した結果の例を次に示します。

図4‒26 対策結果例

[図データ]