Как улучшить производительность с executeBatch? - PullRequest
12 голосов
/ 16 ноября 2011

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

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

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

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

1 Ответ

16 голосов
/ 16 ноября 2011

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

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(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...