jdbc批量插入和查询与带有gernerated密钥的单次插入的比较



我想在一个自动生成键的表中插入很多行。JDBC不能保证获取生成的密钥将在批量更新中起作用。

It is implementation-defined as to whether getGeneratedKeys will return generated values after invoking the executeBatch method.(JDBC 4.0规范2006,第135页)。

我有两个选择。分别插入每一行并获取密钥。或者进行批量插入,然后查询密钥。

为了避免查询多个键的往返,我可以在这里使用这种方法。有5个不同大小的陈述。然后将我的"批处理查询"分解为尽可能小的语句。

什么是更快的方法?

这取决于情况。

我不知道executeBatch()是否真的比重复使用PreparedStatement更快,所以我的建议是:

  1. 尝试getGeneratedKeys()是否适用于JDBC驱动程序。如果它不起作用,那么批量插入无论如何都不适用。

  2. 为两者编写一个测试用例,并测量性能。这为你的决策提供了真实的数据。其他一切都只是猜测(90%的时候都是错误的)。

[EDIT]如果您想保持应用程序数据库不可知,请将测试添加到应用程序中,并在临时/测试表上运行。如果测试成功,请选择一个使用批处理更新的实现,否则请使用暴力。

相关内容

  • 没有找到相关文章

最新更新