estoy usando el siguiente códigoJava JDBC ignora setFetchSize?
st = connection.createStatement(
ResultSet.CONCUR_READ_ONLY,
ResultSet.FETCH_FORWARD,
ResultSet.TYPE_FORWARD_ONLY
);
st.setFetchSize(1000);
System.out.println("start query ");
rs = st.executeQuery(queryString);
System.out.println("done query");
La consulta devolverá un montón de (800k) filas y tomar un tiempo más grande (~ 2 m) entre la impresión "iniciar consultas" y "consulta hecho". Cuando coloco manualmente un "límite 10000" en mi consulta, no hay tiempo entre "inicio" y "hecho". Procesar los resultados lleva tiempo, así que supongo que en general es más rápido si solo obtiene 1k filas de la base de datos, las procesa y cuando se está quedando sin filas puede obtener nuevas en segundo plano.
ResultSet.CONCUR_READ_ONLY, etc. donde fue mi última suposición; ¿Me estoy perdiendo de algo?
(es un servidor de PostgreSQL 8.3)
setFetchSize funciona realmente bien con el conductor de PostgreSQL, que sólo hace un muy cosa diferente de lo que espera que haga. Ver mi respuesta – Henning
Ver también https://stackoverflow.com/a/47517489/32453 – rogerdpack