使用PreparedStatement时,executeBatch()和executeLargeBatch()之间的区别

时间:2015-03-11 10:03:15

标签: java sql batch-processing

我对何时使用executeBatch()executeLargeBatch()感到困惑。 我浏览了Java文档,我找到的唯一区别是:

  当返回的行数超过executeLargeBatch()时,应使用

Integer.MAX_VALUE

我将executeBatch()替换为executeLargeBatch(),但未发现任何性能改进。

处理Integer.MAX_VALUE是唯一目的吗?一个是否有任何性能优势?

2 个答案:

答案 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不能提高性能,只是更新的记录数,更新语句可能会返回。