StatementとResultSetのフェッチサイズの設定の違いは何ですか? Oracleのドキュメントによれば、フェッチ・サイズがStatementに設定されている場合、フェッチ・サイズが結果セットを取得する前に設定されている限り、ResultSetでも同様に使用されます。 StatementまたはResultSetに設定した場合、どのような違いがありますか?私はOracleデータベースを使用しています。それについては、Oracleのマニュアルを次に示します。Oracle JDBCは、クエリを実行するときにStatementとResultSetのフェッチサイズの設定の違い
はデフォルトでサイズ
を取得し、それはデータベース・カーソルから一度に10行の結果セットを取得します。これは、Oracleのデフォルトのロー・フェッチ・サイズ値です。ローフェッチサイズの値を変更することによって、データベースカーソルへの各トリップで取得されたローの数を変更することができます。
標準JDBCでは、問合せの各データベース往復でフェッチされる行数を指定できます。この数をフェッチ・サイズと呼びます。 Oracle JDBCでは、行プリフェッチ値が文オブジェクトのデフォルトのフェッチ・サイズとして使用されます。フェッチサイズを設定すると、行プリフェッチの設定が上書きされ、そのステートメントオブジェクトで実行される後続のクエリに影響します。
フェッチサイズも結果セットで使用されます。ステートメント・オブジェクトが照会を実行するとき、ステートメント・オブジェクトのフェッチ・サイズは、照会によって生成された結果セット・オブジェクトに渡されます。ただし、結果セット・オブジェクトのフェッチ・サイズを設定して、渡された文のフェッチ・サイズをオーバーライドすることもできます。
若干の違いがあります。ステートメントに設定されたフェッチ・サイズは、最初のフェッチに使用されます。結果セットが返されるまでに、最初のフェッチは完了します。したがって、最初のフェッチのサイズを制御する唯一の方法は、ステートメントにそれを設定することです。特定のクエリで1つの行しか返さない場合は、結果セットのフェッチサイズを1に設定すると、コードの結果セットにアクセスする前にステートメントのフェッチサイズが既に使用されているため、何も行われませんサイズを1にフェッチします。 –