Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O que e quando devo especificar setFetchSize()?


Você deve ler esta página dos documentos oficiais em conjuntos de resultados . Diz

Por padrão, ResultSets são completamente recuperados e armazenados na memória. Na maioria dos casos, esta é a maneira mais eficiente de operar e, devido ao design do protocolo de rede MySQL, é mais fácil de implementar. Se você estiver trabalhando com ResultSets que tenham um grande número de linhas ou valores grandes e não puder alocar espaço de heap em sua JVM para a memória necessária, você pode dizer ao driver para transmitir os resultados de volta uma linha por vez.
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                            java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);

A combinação de um conjunto de resultados somente leitura e encaminhamento, com um tamanho de busca de Integer.MIN_VALUE serve como um sinal para o driver transmitir conjuntos de resultados linha por linha. Depois disso, quaisquer conjuntos de resultados criados com a instrução serão recuperados linha por linha.

Com efeito, definir apenas fetchSize não tem efeito na implementação do conector-j.