Oracle
 sql >> Base de données >  >> RDS >> Oracle

Quoi et quand dois-je spécifier setFetchSize() ?

Vous devriez lire cette page à partir des documents officiels sur les ensembles de résultats . Il dit

Par défaut, les ResultSets sont entièrement récupérés et stockés en mémoire. Dans la plupart des cas, c'est le moyen le plus efficace de fonctionner et, en raison de la conception du protocole réseau MySQL, il est plus facile à mettre en œuvre. Si vous travaillez avec des ResultSets qui ont un grand nombre de lignes ou de grandes valeurs, et que vous ne pouvez pas allouer d'espace de tas dans votre JVM pour la mémoire requise, vous pouvez dire au pilote de diffuser les résultats une ligne à la fois.

stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                            java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);

La combinaison d'un ensemble de résultats en lecture seule et en avant uniquement, avec une taille d'extraction de Integer.MIN_VALUE sert de signal au pilote pour diffuser les ensembles de résultats ligne par ligne. Après cela, tous les ensembles de résultats créés avec l'instruction seront récupérés ligne par ligne.

En effet, définir uniquement fetchSize n'a aucun effet sur l'implémentation du connecteur-j.