我必须在AWS RDS上跟踪sql以获取oracle数据库
BEGIN
FOR user_id_count IN 1..4000 LOOP
INSERTUSERINTOFINALTABLE(user_id_count);
END LOOP;
END;
其中INSERTUSERINTOFINALTABLE PROC定义如下
INSERT INTO FinalTable (USERID, ABC, DEF, ...,XYZ )
select
a.USERID,
b.ABC,
b.DEF,
....
b.XYZ
from a
left outer join b on a.USERID = b.userid
where a.userid = USER_ID and b.XYZ not in ( select XYZ from c);
我没有为所有用户做这个简单的插入int的原因是因为我的数据非常大并且想确保我不会耗尽内存。
问题是,有没有办法在oracle中并行运行?
由于
答案 0 :(得分:1)
并行插入多行没有意义。我会解释原因。
如果insert
语句是循环中唯一的语句,则语句不会真正并行运行。那是因为insert
语句是原子的。
同一个会话中不能有两个插入语句,同时运行,尤其是当您的插入基于另一个表的select语句时,这很可能会锁定表以进行并发读取操作。