Sto utilizzando il seguente codiceJava 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 query restituire un sacco di (800k) righe e prendere un grande tempo (~ 2 m) tra la stampa "start query" e "interrogazione fatto". Quando inserisco manualmente un "limite 10000" nella mia query non c'è tempo tra "start" e "done". Elaborare i risultati richiede tempo quindi immagino che nel complesso sia più veloce se recupera solo le righe da 1k dal database, le elabora e quando sta esaurendo le righe ne può ottenere di nuove in background.
Il ResultsSet.CONCUR_READ_ONLY ecc. Dove la mia ultima ipotesi; mi sto perdendo qualcosa?
(si tratta di un server PostgreSQL 8.3)
setFetchSize in realtà funziona bene con il driver PostgreSQL, semplicemente fa un molto cosa diversa da come ti aspetti che faccia. Vedi la mia risposta. – Henning
Vedere anche https://stackoverflow.com/a/47517489/32453 – rogerdpack