2016-07-29 49 views

答えて

3

データグリッドを実行すると、最初の50行だけがフェッチされます(デフォルト)。ページを閉じると、さらにバッチフェッチが実行され、追加の時間がかかります。これは29回繰り返され、1400行すべてを取得しますが、必要に応じて取得します。

スクリプトを実行すると、すべての行(設定した制限まで、デフォルトはまだ5000だと思います)が一度に取り込まれるため、ネットワーク経由でデータをすぐに取得するのに多くの時間を費やしています。

データグリッドのすべての行を見ると、DBサーバーからPCにデータを転送するのに費やされる時間は同じです。ちょうどチャンクに分割されます。余分なオーバーヘッドから全体的にオーバーヘッドが増える可能性があります(とにかく、各バッチでJDBC経由でフェッチされる行の数に応じて)。グリッドの一番下のページを右下に表示する場合は、グリッドの上部にある「取得された行」の表示を見てください。そしてそれが終わりに達すると、スクリプトが実行されたときに「すべての行がフェッチされました」という時間があります。

+0

これは2つのボタンの違いを説明しています。ありがとうございました。しかし、今では、Webサービスを使用してこのクエリを実行します。私は、データを取得するのに1秒かかると仮定していますが、要求するシステムに3フィールド程度の1400レコードを転送するのに20-30秒かかりますか? – Thomas

+0

クエリ自体やネットワークのパフォーマンスは、私たちが実行スクリプトか実行スクリプトかどうかは関係ありません。 Runで22秒で1400行、およそ0.75秒で50行を取得すると、ネットワークの問題が両方に影響を与える可能性があります。それは別の質問ですが、実行はスクリプトの実行よりも速く(データの取得が少ないため)正常です。 –

+0

これはクエリに依存し、クエリが終了する前に結果を返すことができるかどうかによって異なります。私は、WebサービスがSQL Developerと何をしているのかよく分かりません。 SQL Developerでは、Webサービスの実行中に1400行すべてを取得するのに同じ時間(〜20秒)かかります。おそらくいくつかの可能性のある問題が排除されます。 DBサーバー上でSQL = * Plusを実行すると同じ時間がかかると、ネットワークが実際に式から外れてしまい、実際のクエリを調べる必要があります。 –

関連する問題