アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のような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 のコストが高くなってて気になってます。
たとえば、この場合のより適切な実行計画ってありますか?

A 回答 (1件)

> この時、実行計画が


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

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

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

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

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

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

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

従って、この部分をなるべく高速に返せるようにすることが重要です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/16 01:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す