Подтвердить что ты не робот

Как повысить производительность с помощью executeBatch?

Я пишу Java-код для вставки 45000 записей в таблицу и я использую следующий код:

//create Db Connection
List<String> sqlInsertQueries = getListOfInsertsQueries();
for (String currentsql : sqlInsertQueries)
{
  stmt.addBatch(currentsql);
}
stmt.executeBatch();
conn.commit();

Этот код очень медленный, и для завершения требуется почти 5 минут.

Есть ли идея, как заставить его работать быстрее?

4b9b3361

Ответ 1

Вы должны убедиться, что auto commit является ложным и использовать подготовленные операторы. Подготовленные операторы могут использоваться для вставки и обновления.

connection con.setAutoCommit(false);  
PreparedStatement prepStmt = con.prepareStatement("INSERT INTO table (val1,val2) VALUES (?,?)");

for all values:
  prepStmt.setString(1,val1);
  prepStmt.setString(2,val2);
  prepStmt.addBatch();    

stmt.executeBatch(); 
conn.commit();