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
的容量,则说明使用后者。例如,它们是(returnsint
)和(returnslong
)的批处理等价物
我不期望有任何显著的性能差异;如果可能要更新的行数超过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
,性能不会得到提高。我发现这个问题很有用,因为很容易忽略问题中引用的文本和返回类型的差异。