こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

実行計画HASH JOIN RIGHT OUTER

以下のようなSQLがあるとします。

------------------------
SELECT * from
(select * from TABLE-A where 条件色々) AA,
TABLE-B BB
where
BB.x(+) = AA.x
------------------------

TABLE-Aの件数は非常に多く(例100万)、条件は複雑です。
TABLE-Bの件数は少ないです(例30件)

この時、実行計画が
HASH JOIN RIGHT OUTER
TABLE ACCESS FULL TABLE-B

のように出ましたが、どのように解釈すれば良いのでしょう?
TABLE-Bは件数が少ないのでACCESS FULLでも問題ないでしょうか?
HASH JOIN RIGHT OUTER のコストが高くなってて気になってます。
たとえば、この場合のより適切な実行計画ってありますか?

投稿日時 - 2012-06-12 23:01:21

QNo.7530007

困ってます

質問者が選んだベストアンサー

> この時、実行計画が
> HASH JOIN RIGHT OUTER
> TABLE ACCESS FULL TABLE-B
>
> のように出ましたが、どのように解釈すれば良いのでしょう?

AAとBBをハッシュ外部結合した。

> TABLE-Bは件数が少ないのでACCESS FULLでも問題ないでしょうか?

たかが30件ですからね。。

> たとえば、この場合のより適切な実行計画ってありますか?

「*」の部分が本当に「*」で、AAの件数(条件色々で絞り込んだ結果)が
極めて大きいなら、他の実行計画は考えにくいです。

# TABLE-Aの件数は非常に多く(例100万)、条件は複雑です。

従って、この部分をなるべく高速に返せるようにすることが重要です。

投稿日時 - 2012-06-14 10:20:27

お礼

ご回答ありがとうございました。
ハッシュ結合の場合、小さい方のテーブルは必ずACCESS FULLになるようですね。
知識不足でした。

投稿日時 - 2012-06-16 01:18:22

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)