我对何时使用executeBatch()
和executeLargeBatch()
感到困惑。
我浏览了Java文档,我找到的唯一区别是:
当返回的行数超过executeLargeBatch()
时,应使用
Integer.MAX_VALUE
。
我将executeBatch()
替换为executeLargeBatch()
,但未发现任何性能改进。
处理Integer.MAX_VALUE
是唯一目的吗?一个是否有任何性能优势?
答案 0 :(得分:11)
您引用的差异 差异:executeBatch
返回int[]
以返回每次更新的计数。 executeLargeBatch
返回 long[]
以返回每次更新的计数。因此,如果计数可能超过int
的容量,则说明使用后者的文档。例如,它们是executeUpdate
(返回int
)和executeLargeUpdate
(返回long
)的批次等价物。
我不希望任何重要的表现差异;如果你有可能更新超过2,147,483,647行,那么只是不会溢出int
。
答案 1 :(得分:0)
executeBatch()和executeLargeUpdate()的用法不同。尽管executeBatch()用于执行多个SQL语句,但是executeLargeUpdate()适用于单个更新语句。
单个更新语句: int executeUpdate()
单个更新语句,希望它更新的记录多于int可以处理的记录: 长executeLargeUpdate()
多个SQL语句: int [] executeBatch()
当您期望一个或多个SQL更新的记录多于int可以处理的多个SQL语句时: long [] executeLargeUpdate()
largeUpdate不能提高性能,只是更新的记录数,更新语句可能会返回。