1

Oracle Database 11g で Oracle PL/SQL Developer を使用しています。私は最近、奇妙な振る舞いをするビューを書きました。クエリの最後のページをフェッチせずに以下の単純なクエリを実行すると、クエリ時間は約 0.5 秒 (キャッシュされている場合は 0.2 秒) です。

select * from covenant.v_status_covenant_tuning where bankkode = '4210';

ただし、PL/SQL Developer で最後のページをフェッチするか、Java コードからクエリを実行すると (つまり、すべての行を取得するクエリを実行すると)、ビューに何かが発生し、クエリ時間が約 20 ~ 30 に増加します。秒。

ビューを再コンパイルする前に、ビューが正常に機能しなくなりました。説明計画は前後でまったく同じです。すべてのインデックスとテーブルが分析されます。関連性があるかどうかはわかりませんが、ビューでは、rank() over (partition by .....)、lag()、lead() などの分析式がいくつか使用されます。

私はここに来たばかりなので、説明計画の写真を投稿することはできません (評判が 10 必要です) が、一般的に、オプティマイザーはインデックスを効率的に使用し、分析機能のためにいくつかの並べ替えを行います。

4

1 に答える 1