sql >> Databasteknik >  >> RDS >> Oracle

Vad och när ska jag ange setFetchSize()?

Du bör läsa den här sidan från de officiella dokumenten om resultatuppsättningar . Det står

Som standard hämtas ResultSets fullständigt och lagras i minnet. I de flesta fall är detta det mest effektiva sättet att arbeta, och på grund av utformningen av MySQL-nätverksprotokollet är det lättare att implementera. Om du arbetar med ResultSets som har ett stort antal rader eller stora värden och inte kan tilldela heap-utrymme i din JVM för det minne som krävs, kan du be föraren att streama resultaten tillbaka en rad i taget.

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

Kombinationen av en framåtriktad, skrivskyddad resultatuppsättning, med en hämtningsstorlek på Integer.MIN_VALUE fungerar som en signal till föraren att strömma resultatuppsättningar rad för rad. Efter detta kommer alla resultatuppsättningar som skapats med satsen att hämtas rad för rad.

I själva verket har inställningen av endast fetchSize ingen effekt på connector-j-implementeringen.



  1. Anslut SQL Server till HubSpot CRM

  2. Verifiera databasanslutning med pg-promise när du startar en app

  3. Tuning SQL

  4. MySQL sök och ersätt viss text i ett fält