gpt4 book ai didi

java - 迭代 ResultSet 时更新行需要花费大量时间

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:09 25 4
gpt4 key购买 nike

我正在尝试改进我编写的数据传输程序。我正在寻找有关如何使其更快的建议。我的程序通过填充结果集并将结果写入文件来从数据库(通常是 Oracle 11g)中提取数据。该程序定期查看表并查询特殊列是否已更改。例如,这可能是这样的查询:

从scheme.table中选择columnA、columnB,其中changeColumn = '1'

现在到了关键部分。提取数据后,我需要将此 changeColumn 更新为 '0'。由于我刚刚使用 ResultSet 将数据导出到文件中,因此我必须将其倒回,因此代码如下所示:

extractedData.beforeFirst();
while (extractedData.next()) {
extractedData.updateString("changeColumn", "0");
extractedData.updateRow();
}

现在,如果这个 ResultSet 更大(比方说超过 100.000 个条目),那么这个循环可能需要几个小时。有人对如何提高性能有什么建议吗?我听说将获取大小设置为更大的值,但通常结果集只包含不到十几个条目。有没有办法动态设置获取大小?

最佳答案

使用 JDBC 批量更新。从所有需要更新的行中,取出需要更新的行的主键,将其添加到批量更新(SQL 查询)并执行批量。

来自 Mkyong 的一个很好的例子向您展示如何使用 JDBCPreparedStatement 进行 JDBC 批量更新。

关于java - 迭代 ResultSet 时更新行需要花费大量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com