我在使用JDBC调用循环中的删除查询。特定删除查询将删除的记录数不一致。它可以是40,80或100等。我的场景是我需要在每500条记录删除后提交。
我实现的方式是,我正在累计将被特定删除查询删除的记录的计数,直到计数等于或大于500.一旦计数变得等于或大于500 ,我暂停计数累积并调用删除查询并承诺一次删除500条记录。 有没有其他更好的方法或JDBC标准方法来做到这一点?
答案 0 :(得分:0)
您可以使用两个JDBC API进行删除:您可以运行delete ... where PK in (...)
之类的查询并传递500个主键的数组。或者,您可以使用JDBC批处理批处理一系列SQL查询并将它们作为一个查询运行。
Batch只是一种在单个"会话中打包几个SQL查询的方法。与数据库。性能提升主要是网络:您可以发送几个大包,而不是发送数百个小包。数据库端的解析和处理是相同的。
但是如果你执行更复杂的查询并收集更改的行数,那么就没有特殊的JDBC支持。您必须自己累积计数,然后在计数过大时手动commit
。