Предполагам, че използвате официалния предоставен от MySQL JDBC драйвер Connector/J.
Вие изрично казвате на JDBC (и MySQL) да предават поточно резултатите ред по ред с statement.setFetchSize(Integer.MIN_VALUE);
От MYSQL Docs :
Всяка стойност, различна от Integer.MIN_VALUE тъй като размерът на извличане се игнорира от MySQL и се прилага стандартното поведение. Целият набор от резултати ще бъде извлечен от JDBC драйвера.
Или не използвайте setFetchSize() , така че JDBC драйверът ще използва стойността по подразбиране (0 ), или задайте стойността на 0 изрично. Използване на стойността на 0 също така ще гарантира, че JDBC не използва MySQL курсори, което може да възникне в зависимост от версиите и конфигурацията на MySQL и Connector/J.