3
不知何故,我的MySQL插入真的很慢。即使当我使用“批量插入”。大约50个插入需要2000毫秒。这是正常还是有办法改善我的代码?Java - 为什么我的插入太慢?
String sql = "INSERT INTO wlw (wlw_level, wlw_name, wlw_url, wlw_processing, wlw_finished, wlw_source)"
+ "VALUES(?, ?, ?, ?, ?, ?)";
PreparedStatement preparedStatement = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
for(QueryStore qs : QueryStore) {
preparedStatement.setInt(1, qs.level);
preparedStatement.setString(2, qs.anchor);
preparedStatement.setString(3, qs.url);
preparedStatement.setInt(4, qs.processing);
preparedStatement.setInt(5, qs.finished);
preparedStatement.setLong(6, qs.id);
preparedStatement.addBatch();
System.out.println("Adding URL: " + qs.url);
}
System.out.println("Start saving ...");
long then = System.currentTimeMillis();
preparedStatement.executeBatch();
long now = then - System.currentTimeMillis();
System.out.println("SAVING END - Took me " + now + "ms");
感谢您的任何建议!
一个可能的优化。没有使用'Statement.RETURN_GENERATED_KEYS',因为你不使用返回的生成键。 – 2013-04-22 20:45:21
这是一个innoDB表? – Khalil 2013-04-22 20:48:36
每次调用执行'INSERT'操作的方法时,您是否正在使用连接池或手动创建连接?你的桌子上有没有触发器,或者是你的桌子上的任何显示器?你插入了多少数据?你的表管理了多少个索引?它使用很多外键吗? – 2013-04-22 20:54:27