sql >> Database >  >> RDS >> Oracle

Wat en wanneer moet ik setFetchSize() opgeven?

Je zou deze pagina moeten lezen uit de officiële documenten over resultatensets . Er staat

ResultSets worden standaard volledig opgehaald en in het geheugen opgeslagen. In de meeste gevallen is dit de meest efficiënte manier van werken, en door het ontwerp van het MySQL-netwerkprotocol is het eenvoudiger te implementeren. Als u met ResultSets werkt die een groot aantal rijen of grote waarden hebben en u geen heapruimte in uw JVM kunt toewijzen voor het benodigde geheugen, kunt u het stuurprogramma vragen de resultaten rij voor rij terug te streamen.

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

De combinatie van een alleen-doorsturen, alleen-lezen resultaatset, met een ophaalgrootte van Integer.MIN_VALUE dient als een signaal voor het stuurprogramma om resultatensets rij voor rij te streamen. Hierna worden alle resultaatsets die met de instructie zijn gemaakt, rij voor rij opgehaald.

In feite heeft het instellen van alleen fetchSize geen effect op de connector-j-implementatie.



  1. Omgaan met tijdzone in webapplicatie

  2. Reconstrueer stand-by DB

  3. Exporteer Oracle-queryresultaten naar een HTML-bestand bij gebruik van SQLcl

  4. NULL-type casten bij het bijwerken van meerdere rijen