Se você habilitar o MySQL Opção JDBC
useCursorFetch
, fetchSize realmente será respeitado pelo driver. No entanto, há uma desvantagem nessa abordagem:ela usará cursores do lado do servidor, que no MySQL são implementados usando tabelas temporárias. Isso significa que os resultados não chegarão até que a consulta seja concluída no servidor e que a memória adicional será usada no lado do servidor.
Se você deseja apenas usar o streaming de resultados e não se importa com o tamanho exato da busca, a sobrecarga de
setFetchSize(Integer.MIN_VALUE)
não é tão ruim quanto os documentos podem sugerir. Na verdade, ele apenas desativa o cache do lado do cliente de toda a resposta e fornece as respostas à medida que elas chegam; não há necessidade de ida e volta por linha.