外部結合と等価結合のパフォーマンスの違いについて(ビューの場合)
Oracle10gでのSQL文の違いについて教えて下さい。
前回の質問は、ストアドプロシージャに記述
されていて、バッチとして動かしています。
と書きましたが、ビューの場合のパフォーマンスの違いは
どうなるのでしょうか?ビューの場合も同じような現象です。
下記の2つのSQL文は外部結合ありと外部結合なしの違いだけで、
他は変わりありません。
外部結合ありのほうは
結果がすぐに返されるのですが、外部結合なしのほうは
結果が返ってこない、あるいはかなり時間がかかるという
現象が起きています。
SQL文は簡略して記述していますが、SELECT句には、
TO_CHAR()やSUM(CASE WHEN ...THEN ...ELSE...)が使用してあり
少し重くなる処理も含まれています。
この2つのSQL文でパフォーマンスに影響している原因は
何なんでしょうか?オプティマイザとか実行計画とかの
説明を読んだのですが、いまいちよく解りません。。
自分では中級者以下だと思っていますので、わかりやすく
説明して頂けたら助かります。宜しくお願い致します。
(外部結合ありのSQL)
SELECT
a.項目1,
a.項目2,
a.項目3,
a.項目4,
a.項目5
FROM
TBL_A a,
TBL_B b
WHERE
a.項目1 = b.項目1(+) AND
a.項目2 = b.項目2(+) AND
a.項目3 = b.項目3(+) AND
a.項目4 = b.項目4(+) AND
GROUP BY
a.項目1,
a.項目2,
a.項目3,
a.項目4,
a.項目5
(外部結合なしのSQL)
SELECT
a.項目1,
a.項目2,
a.項目3,
a.項目4,
a.項目5
FROM
TBL_A a,
TBL_B b
WHERE
a.項目1 = b.項目1 AND
a.項目2 = b.項目2 AND
a.項目3 = b.項目3 AND
a.項目4 = b.項目4 AND
GROUP BY
a.項目1,
a.項目2,
a.項目3,
a.項目4,
a.項目5
お礼
ありがとうございます。 レコード件数はAが数百~数千件、Bが十数件です。 どっちにしてもたいした件数ではないのですが。 > 「実測しましょう」というのが、最も間違いのない答えです。 それはそうなんですが、データの入手はまだ一ヶ月以上さきになるもので。 数千件のデータを手で入力したくないですし。 それで、どなたかご存知ないかなと。