Jag antar att du använder den officiella MySQL-levererade JDBC-drivrutinen Connector/J.
Du säger uttryckligen till JDBC (och MySQL) att strömma resultaten rad för rad med statement.setFetchSize(Integer.MIN_VALUE);
Från MYSQL Docs :
Alla andra värden än Integer.MIN_VALUE
för hämtningsstorleken ignoreras av MySQL, och standardbeteendet gäller. Hela resultatuppsättningen kommer att hämtas av JDBC-drivrutinen.
Använd inte setFetchSize()
, så JDBC-drivrutinen kommer att använda standardvärdet (0
), eller ställ in värdet på 0
uttryckligen. Använder värdet 0
kommer också att säkerställa att JDBC inte använder MySQL-markörer, vilket kan inträffa beroende på din MySQL- och Connector/J-version och konfiguration.