Java - DB2 性能改进

标签 java performance db2

我们有一个 SELECT 语句,大约需要。 3秒执行。我们在嵌套的 While 循环中调用此 DB2 查询。

例如:

虽然(hashmap1.hasNext()){ while(hashmap2.hasNext()){ 查询 }

问题是,外部 While 循环将执行大约。 1200 次,内部 While 循环将执行 200 次。这意味着 SQL 将被调用 1200*200 = 240,000 次。约外部 While 循环的每次迭代将花费 150 秒。所以,1200 * 150 秒 = 50 小时。

在我们开始下一个流程之前,我们只能花大约 12-15 小时的时间。

有没有办法快速完成这个过程?任何可以帮助我们更快地从 DB2 中获取这些记录的新技术。

如有任何帮助,我们将不胜感激。

注意:我们已经研究了所有可能的方法来减少迭代次数。

最佳答案

在我看来,您正试图将中间层用于数据库本身更适合的用途。这是一个经典的“N+1”查询问题。

我将重写此逻辑以作为正确索引的 JOIN 完全在数据库上执行。这不仅会减少所有网络来回的流量,还会让数据库优化器承担并节省您将所有数据带到中间层进行处理的费用。

关于Java - DB2 性能改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6101101/

相关文章:

java - 为什么广播接收器不能动态工作?

C++ 加速多个 substr() 或等效函数调用以解析大字符串

mysql - MySQL 中多个模式之间的交叉连接。权限和性能

php - Linux 上的 DB2 驱动程序出现许可证错误

sql - Derby 中的内联临时表(如 DB2)

sql从 "record per month"转换为 "record from/until"

java - Log4j2:如何在不使用 Throwable 的情况下获取类名和行号?

java - 在 Canvas 中 hibernate 线程

java - Hashmap 与数组性能

java - ArrayList<JSONObject> 与 JSONArray