0

TOAD を開いて実行するselect * from tableと、結果 (最初の 500 行) がほぼ瞬時に返されます。しかし、Explain Plan は完全なテーブル スキャンを示しており、テーブルは非常に巨大です。こんなに早く結果が出るなんて。

4

2 に答える 2

4

一般に、Oracle はデータを返し始める前に結果セット全体を具体化する必要はありません (もちろん、Oracle がデータを返し始める前にソートするために結果セットを具体化する必要がある場合もあります)。クエリで結果セット全体を実体化する必要がないと仮定すると、クライアント プロセスが TOAD、SQL*Plus、または作成した JDBC アプリケーションのいずれであるかに関係なく、Oracle はクライアント プロセスにデータを返し始めます。クライアントがさらにデータを要求すると、Oracle はクエリの実行を続行し、結果の次のページを返します。これにより、Oracle がクエリ全体を実行して最後の行をクライアントに返すのに最終的に何時間もかかる場合でも、TOAD は最初の 500 行を比較的迅速に返すことができます。

于 2012-10-15T14:35:06.110 に答える
0

Toad はパフォーマンスのために最初の 500 行のみを返しますが、そのクエリを Oracle インターフェイス (JDBC など) を介して実行すると、結果全体が返されます。私の推測では、Explain Plan は、レコードのサブセットを取得できない場合の結果を示していると思います。それが私がそれを使用する方法です。私自身の経験以外に、これに関する情報源はありません。

于 2012-10-15T14:23:03.460 に答える