Du bör läsa den här sidan från de officiella dokumenten om resultatuppsättningar . Det står
Som standard hämtas ResultSets fullständigt och lagras i minnet. I de flesta fall är detta det mest effektiva sättet att arbeta, och på grund av utformningen av MySQL-nätverksprotokollet är det lättare att implementera. Om du arbetar med ResultSets som har ett stort antal rader eller stora värden och inte kan tilldela heap-utrymme i din JVM för det minne som krävs, kan du be föraren att streama resultaten tillbaka en rad i taget.
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
Kombinationen av en framåtriktad, skrivskyddad resultatuppsättning, med en hämtningsstorlek på Integer.MIN_VALUE fungerar som en signal till föraren att strömma resultatuppsättningar rad för rad. Efter detta kommer alla resultatuppsättningar som skapats med satsen att hämtas rad för rad.
I själva verket har inställningen av endast fetchSize ingen effekt på connector-j-implementeringen.