Java 使用PreparedStatement时executeBatch()和executeLargeBatch()之间的差异

Java 使用PreparedStatement时executeBatch()和executeLargeBatch()之间的差异,java,sql,batch-processing,Java,Sql,Batch Processing,我不知道何时使用executeBatch()和executeLargeBatch()。 我浏览了Java文档,发现唯一的区别是: 当返回的行计数可能超过Integer.MAX\u值时,应使用executeLargeBatch() 我用executeLargeBatch()替换了executeBatch(),但没有发现任何性能改进 处理Integer.MAX\u值是否是唯一的目的?其中一个比另一个有性能优势吗?您引用的差异是差异:返回int[]以返回每次更新的计数。返回long[]以返回每次更新的

我不知道何时使用
executeBatch()
executeLargeBatch()
。 我浏览了Java文档,发现唯一的区别是:

当返回的行计数可能超过
Integer.MAX\u值时,应使用
executeLargeBatch()

我用
executeLargeBatch()
替换了
executeBatch()
,但没有发现任何性能改进


处理
Integer.MAX\u值是否是唯一的目的?其中一个比另一个有性能优势吗?

您引用的差异差异:返回
int[]
以返回每次更新的计数。返回
long[]
以返回每次更新的计数。因此,如果计数可能超过
int
的容量,则说明使用后者。例如,它们是(returns
int
)和(returns
long
)的批处理等价物

我不期望有任何显著的性能差异;如果可能要更新的行数超过2147483647行,只需不溢出
int

executeBatch()和executeLargeUpdate()有不同的用法。虽然executeBatch()用于执行多个SQL语句,但executeLargeUpdate()适用于单个update语句

单个更新语句: int executeUpdate()

单个Update语句,当您希望它更新的记录超过int所能处理的数量时: long executeLargeUpdate()

多个SQL语句: int[]executeBatch()

当您希望一个或多个SQL更新的记录超过int所能处理的数量时,会出现多个SQL语句: long[]executeLargeUpdate()


largeUpdate没有性能提升,只是更新了记录的数量,更新语句可能会返回。

而且我认为如果我们在可以使用
executeBatch
的地方使用
executeLargeBatch
,性能不会得到提高。我发现这个问题很有用,因为很容易忽略问题中引用的文本和返回类型的差异。