【发布时间】:2013-10-11 12:37:21
【问题描述】:
在我的应用程序中,我有一个包含大约 200K 记录的表,我需要在数据库中更新这些记录。如果数据库中存在匹配记录然后插入或更新,而不是检查每条记录,我认为更快的方法是删除数据库中的所有匹配记录并插入它们。我正在使用 Spring JDBC 框架。 要删除,我使用了 Jdbctemplate batchUpdate 方法和 ParameterizedPreparedStatementSetter,对于插入,我使用的是 SimplJdbcInsert。 插入工作正常,但是批量删除性能非常慢。 我不太确定我应该采取什么其他方法来删除数据库中的记录并插入它们。任何建议都会非常有帮助。我正在使用 SQL Server 2008 R2
ParameterizedPreparedStatementSetter<Order> vSetter =
new ParameterizedPreparedStatementSetter<Order>() {
@Override
public void setValues(PreparedStatement ps,
Order order) throws SQLException {
ps.setInt(1, order.getOrderNum());
}
};
getJdbcTemplate().batchUpdate("DELETE FROM Order WHERE OrderNum = ?",
aDemandOrders,
50000,
vSetter);
【问题讨论】:
-
我建议使用
MERGE,而不是先删除再插入。 -
我最终进行了更新,并根据更新计数执行了插入。大大提高了性能
标签: java jdbc spring-jdbc jdbctemplate