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

PreparedStatement , CallableStatement e considerazioni sulle prestazioni

Dal tuo commento, hai prepareCall all'interno del tuo ciclo. Un vantaggio delle istruzioni preparate (e delle istruzioni richiamabili) è che puoi prepararle una volta e quindi scambiare i valori passati nei parametri; c'è un sovraccarico ogni volta che la chiamata viene preparata, quindi se potessi portarlo fuori dal tuo ciclo, potresti scoprire che il tempo di esecuzione diminuisce. Potresti scoprire che anche la disattivazione di AutoCommit aiuta, poiché c'è un sovraccarico con ogni 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) si impegna, ma trovo più chiaro essere esplicito).