10

次のクエリがあるとします。

SELECT * FROM table;

DBMS は、フェッチするとすぐに最初の行を提供しますか?それとも、最初にすべての行をフェッチし (何らかのバッファに保存します)、次にすべての行を一度に提供しますか?

私の質問が明確ではなかった場合。の行の量がtable、DBMS がすべての行をフェッチするのにちょうど 60 分かかるようなものであるとします。DBMS は 60 分間かけて徐々に行を返しますか、それともデータを受信するまでに 60 分待たなければなりませんか?

4

4 に答える 4

3

ここには難しいルールはありません。しかし実際には、データベース エンジンは、行が利用可能になるとすぐに行を返すことを優先する必要があります。効率の利点は大きく、明白です。

これはすべてのクエリで可能ではないことに注意してください。非常に一般的な例は、order byサポート インデックスを持たない句です。並べ替えるために、データベースは並べ替えられるテーブルのサーバー側のコピーを作成する必要があります。これは、並べ替え操作が完了するまで行を返し始めることができないことを意味します。

于 2013-08-04T17:53:48.537 に答える