4.4.3 結合処理情報(JOIN)のLeftとRight
- 〈この項の構成〉
(1) 外表が絞り込めているか確認する
結合方法がNESTED LOOPS JOINの場合,先に検索する表(外表)から取り出した行の数だけ,もう一方の表(内表)を検索します。このため,取り出す行数の少ない方を外表にした方が,内表を検索する回数が少なくなります。結合処理情報では,外表の方が取り出した行数が少ないか確認します。外表から取り出した行数はLeftの値,内表から取り出した行数はRightの値になります。外表と内表から取り出す行数について,次に示します。
|
(2) 確認方法
中間結果情報の中で「JOIN」と表示されている個所が,結合処理情報です。この下のLeftの値とRightの値を比べて,外表から取り出す件数が多くないか確認してください。アクセスパスと結合処理情報の出力例を次に示します。
|
(3) 対策方法
対策方法を次に説明します。一方の方法だけで対策できない場合は,両方の対策を合わせて実施してください。
-
外表に,さらに絞り込める探索条件を追加してください。
-
内表の方が探索条件で絞り込める場合は,外表と内表を入れ替えてください。SQLの結合表の指定(JOIN)を使って,外表と内表を明示的に指定することで対策できます。
[注意事項]
-
内表と外表を入れ替える場合は,内表に結合条件を評価できるインデクスを定義してください。詳細は,「[NESTED LOOPS JOINにするには]」を参照してください。
内表と外表を入れ替えて対策した結果の例を次に示します。
|