私のアプリケーションには、データベースで更新する必要がある約 200K レコードのテーブルがあります。一致するレコードがDBに存在するかどうかをすべてのレコードをチェックしてから挿入または更新する代わりに、DB内の一致するすべてのレコードを削除して挿入する方が速いと思いました。Spring JDBC フレームワークを使用しています。削除するには Jdbctemplate の batchUpdate メソッドを ParameterizedPreparedStatementSetter と共に使用し、挿入には SimplJdbcInsert を使用しています。挿入は正常に機能しますが、バッチ削除のパフォーマンスは非常に遅くなります。DBのレコードを削除して挿入するために他にどのようなアプローチをとるべきかはよくわかりません。どんな提案でも非常に役に立ちます。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);