Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PreparedStatement , CallableStatement und Leistungsüberlegungen

Aus Ihrem Kommentar geht hervor, dass Sie in Ihrer Schleife "preparateCall" enthalten. Ein Vorteil vorbereiteter Anweisungen (und aufrufbarer Anweisungen) besteht darin, dass Sie sie einmal vorbereiten und dann die in den Parametern übergebenen Werte austauschen können. Jedes Mal, wenn der Anruf vorbereitet wird, entsteht Overhead. Wenn Sie das also aus Ihrer Schleife herausbringen könnten, werden Sie möglicherweise feststellen, dass die Laufzeit abnimmt. Möglicherweise hilft auch das Deaktivieren von AutoCommit, da jeder Commit Overhead verursacht.

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

(conn.setAutoCommit(true) begeht, aber ich finde es klarer, explizit zu sein).