Vou assumir que você está usando o driver JDBC oficial do MySQL, Connector/J.
Você está dizendo explicitamente ao JDBC (e MySQL) para transmitir os resultados linha por linha com
statement.setFetchSize(Integer.MIN_VALUE);
De Documentos MYSQL :
Qualquer valor diferente de
Integer.MIN_VALUE
para o tamanho da busca é ignorado pelo MySQL, e o comportamento padrão se aplica. Todo o conjunto de resultados será buscado pelo driver JDBC. Ou não use
setFetchSize()
, então o driver JDBC usará o valor padrão (0
), ou defina o valor como 0
explicitamente. Usando o valor de 0
também garantirá que o JDBC não use cursores MySQL, o que pode ocorrer dependendo das versões e configuração do MySQL e do Connector/J.