暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 并发执行多个查询

ASKTOM 2020-01-10
398

问题描述

嗨,汤姆,

我有一个表有2400选择查询。我有一个过程,它一个接一个地调用和执行每个查询,并更新相同的表但不同的列。这需要1个多小时。我们如何同时执行多个查询以减少运行时间。
我已经在表中每个查询中添加了并行提示。

谢谢,
拉维

专家解答

"updating the same table but different column


在我看来,你不想同时运行东西,因为如果它们竞争相同的 * 行 *,那么你将会有各种各样的并发/锁定问题

只要您可以将代码分成块,而不会使您陷入巨大的锁定混乱,就可以使用DBMS_JOB或DBMS_SCHEDULER并行运行它们。

另一件事是,如果可能的话,对现有代码进行一些重构。

例如:

update MY_TABLE t
set COL1 = ( select abc from OTHER_TABLE where ... )

update MY_TABLE t
set COL2 = ( select def from OTHER_TABLE where ... )

update MY_TABLE t
set COL3 = ( select xyz from OTHER_TABLE where ... )
复制


也许可以重铸为

update MY_TABLE t
set (COL1,COL2,COL3) = ( select abc,def,xyz from OTHER_TABLE where ... )
复制


等等。


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论