sql >> Database teknologi >  >> RDS >> Oracle

PreparedStatement, CallableStatement og præstationsovervejelser

Fra din kommentar har du prepareCall inde i din loop. En fordel ved forberedte sætninger (og callable sætninger) er, at du kan forberede den én gang, og derefter udskifte de værdier, der sendes i parametrene; der er overhead, hver gang opkaldet forberedes, så hvis du kunne bringe det uden for din løkke, kan du opleve, at køretiden falder. Du vil måske opdage, at det også hjælper at slå AutoCommit fra, da der er overhead med hver commit.

conn.setAutoCommit(false);
CallableStatement stmt = conn.prepareCall(sql);
while(true) {
    stmt.setInt(1, value);
    stmt.execute();
}
conn.commit();
conn.setAutoCommit(true);

(conn.setAutoCommit(true) binder, men jeg finder det tydeligere at være eksplicit).



  1. Postgresql:datoformat og lokalt sprogoutput

  2. EF og TransactionScope til både SQL Server og Oracle uden at eskalere/spænde til DTC?

  3. Playframework evolution-filer, der er kompatible med både postgres og h2

  4. Laravel 5 + PostgreSQL:Database [postgres] ikke konfigureret. Fejl