gpt4 book ai didi

java - 使用 PreparedStatement 和 executeBatch 在 jdbc 上最快 'update'

转载 作者:行者123 更新时间:2023-11-30 12:00:09 25 4
gpt4 key购买 nike

我有一个 java 程序,在某些情况下必须更新数据库中的大量记录(例如 100,000)。

它的方法是创建一个 PreparedStatement 并使用 addBatch 技术。这是片段:

connection.setAutoCommit(false);
PreparedStatement ps = connection.prepareStatement(
"UPDATE myTable SET colName=? where id=?");

for (...) { // this loop can be 100000 long
colValue = ...
id = ...
ps.setString(1,colValue);
ps.setString(2,id);
ps.addBatch();
}

ps.executeBatch();
connection.commit();

这是在 JDBC 中更新 100000 条记录的最佳(最快)方法吗?

谁能提出更好的方法?

最佳答案

试试这个作为基准:

  1. 使用内置的 SQL 工具批量提取整个表。所有行。所有列。

  2. 删除(或重命名)表格。

  3. 使用简单的平面文件读/写创建应用了更新的新文件。

  4. 使用数据库附带的批量加载实用程序从提取的文件重建整个表。

  5. 重新加载后添加索引。

您可能会发现这比任何 SQL 解决方案都快。我们停止对数据仓库使用更新,因为提取 -> 平面文件处理 -> 加载比 SQL 快得多。

关于java - 使用 PreparedStatement 和 executeBatch 在 jdbc 上最快 'update',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193751/

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