我们有一个SELECT语句,需要大约。执行3秒。我们在嵌套的While循环中调用这个DB2查询。
例如:
虽然(hashmap1.hasNext()){ 而(hashmap2.hasNext()){ SQL查询 } }
问题是,外部While循环将执行约。 1200次内部While循环将执行200次。这意味着SQL将被称为1200 * 200 = 240,000次。约。 Outer While循环的每次迭代将花费150秒。所以,1200 * 150秒= 50小时。
在我们开始下一个过程之前,我们只能负担大约12-15小时的时间。
有没有办法快速完成这个过程?任何可以帮助我们更快地从DB2获取这些记录的新技术。
任何帮助都将受到高度赞赏。
注意:我们已经研究了减少no.of迭代的所有可能方法。
答案 0 :(得分:4)
听起来像你正试图将中间层用于数据库本身更适合的东西。这是一个经典的“N + 1”查询问题。
我重写了这个逻辑,完全在数据库上执行,作为正确索引的JOIN。这不仅可以来回减少所有网络,而且还会带来数据库优化器,并节省将所有数据带到中间层进行处理的费用。