sql >> Base de Datos >  >> RDS >> Oracle

¿Qué y cuándo debo especificar setFetchSize()?

Debe leer esta página de los documentos oficiales sobre conjuntos de resultados . Dice

De forma predeterminada, los ResultSets se recuperan por completo y se almacenan en la memoria. En la mayoría de los casos, esta es la forma más eficiente de operar y, debido al diseño del protocolo de red MySQL, es más fácil de implementar. Si está trabajando con ResultSets que tienen una gran cantidad de filas o valores grandes y no puede asignar espacio de almacenamiento dinámico en su JVM para la memoria requerida, puede indicarle al controlador que transmita los resultados una fila a la vez.

stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                            java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);

La combinación de un conjunto de resultados de solo avance y solo lectura, con un tamaño de recuperación de Integer.MIN_VALUE, sirve como una señal para que el controlador transmita los conjuntos de resultados fila por fila. Después de esto, cualquier conjunto de resultados creado con la instrucción se recuperará fila por fila.

En efecto, establecer solo fetchSize no tiene efecto en la implementación del conector-j.