私はパフォーマンスを向上させるためにリファクタリングに取り組んでいるやや厄介なクエリを継承しました。
このプロセス中に、私が個人的な好みで行ったことの 1 つは、ANSI-99 結合構文のすべてを「内部結合」および「左外部結合」ステートメントからクエリの述語に変更することでした。2 つの非常に奇妙なことに気付きました。説明をいただければ幸いです。
- 「INNER JOIN...」構文から結合を変更すると、説明計画が変更されました。ANSI 99 構文を使用すると、Oracle は結合される列に対して全表スキャンを実行しました。結合構文を変更した後、述語のプッシュが行われるようになりました。結合構文によって説明計画が変更されるのはなぜですか?
- インライン ビューにプレディケートをプッシュすると、実際には、クエリが非常に大幅に遅くなります。(結合を変更する前に) 約 3 秒で実行されていたクエリ。現在、9秒かかります。正直なところ、私は説明計画を読むのはかなり初めてなので、クエリの再構築によって別の理由で速度が低下した可能性は十分にあります。しかし、最終的に私の質問は次のとおりです。
返信ありがとうございます。これが明確でない場合は申し訳ありません...