0

28 列と 8100 行を保持するカーソルを返す PL/SQL 関数があります。SQL Plus からその関数を実行すると、すぐに結果が得られ、SQL Developer で非常に長い時間 (約 80 秒) かかるスクリプトを実行しています。Java コードからも同じことが起こります。列の数が 2 に減ると、4 秒以内に応答が得られました。誰かがこの場合に何が起こっているのか説明できますか?

4

2 に答える 2

1

最も簡単な実験は、SQL Developer で "SQL Array Fetch Size" を変更することです。デフォルトは 50 です。500 に増やした結果が表示されれば、答えがあります。

興味深いことに、同等の SQL Plus パラメータのデフォルトはわずか 15 ですが、APC が述べたように、SQL Plus にはネイティブであるという利点があります。

「SQL Array Fetch Size」を変更しても何も起こらない場合、次に確認するのは JDBC 設定です。これは SQL Developer が使用し、SQL*Plus は使用しません。

于 2010-08-18T13:42:52.467 に答える
0

私の前の良い答えに加えて...

SQL*PLus は最初の行が返されるとすぐにデータを画面に送り返しますが、SQL Developer はレコードを表示する前に返す結果セットのサイズを見つける必要があります。

これは、特に結果セットが大きい場合、または完全に戻るまでに長い時間がかかる場合 (実行パスが複雑な場合など)、SQL Developer で遅延が発生する理由を説明している可能性があります。

于 2011-07-08T15:03:01.827 に答える