3

クエリの実行後、PostgreSQL JDBC ドライバーバージョン9.2-1002がサーバーから行をフェッチするのはいつですか? クエリの実行直後 (クライアント アプリケーションが を呼び出した後)、またはクライアント アプリケーションが結果セットから行を取得するためにPreparedStatement.executeQuery()最初に呼び出した後に行をフェッチしますか? ResultSet.next()これはステートメントのフェッチ サイズの値に依存しますか?

4

3 に答える 3

2

このドキュメントを見てください

デフォルトでは、ドライバはクエリのすべての結果を一度に収集します。これは大規模なデータ セットには不便な場合があるため、JDBC ドライバーはデータベース カーソルに基づいて ResultSet を作成し、少数の行のみをフェッチする手段を提供します。

少数の行が接続のクライアント側にキャッシュされ、使い果たされると、カーソルの位置を変更して次の行ブロックが取得されます。

さらにこれを読む

通常、libpq は SQL コマンドの結果全体を収集し、単一の PGresult としてアプリケーションに返します。これは、多数の行を返すコマンドでは機能しない可能性があります。このような場合、アプリケーションは単一行モードで PQsendQuery と PQgetResult を使用できます。このモードでは、サーバーから受信した結果行が一度に 1 行ずつアプリケーションに返されます。

于 2013-07-04T16:48:58.100 に答える