我有一个带有SQL语句的表。
rules_table
---------------------------------------
| rule_id | rule | run_rule |
---------------------------------------
| 01 | INSERT INTO... | yes |
---------------------------------------
| 02 | INSERT INTO... | no |
---------------------------------------
| 03 | INSERT INTO... | yes |
---------------------------------------每个insert语句大约需要2-3分钟才能完成,其中有几百个,每个插入都采用以下形式:
INSERT INTO some_table
(column1, column2, ... column_n )
SELECT expression1, expression2, ... expression_n
FROM source_table
WHERE conditions;有办法并行运行insert语句吗?
发布于 2015-07-27 11:03:38
经过所有通过注释here和她的enter link description heree进行的讨论,并且您不能更改当前的设计,我建议并行执行它们的唯一方法是使用DBMS_SCHEDULER。
例如,
BEGIN
DBMS_SCHEDULER.RUN_JOB('pkg1.proc1', false);
DBMS_SCHEDULER.RUN_JOB('pkg2.proc2', false);
DBMS_SCHEDULER.RUN_JOB('pkg3.proc3', false);
END;
/因此,您可以在各自的过程中使用所需的插入语句。
您需要使用EXECUTE IMMEDIATE来执行过程中的INSERT语句。当您执行上面的PL/SQL块时,它将运行并行中的所有过程。将rule_id作为IN参数发送到过程,基于rule_id,您可以调用EXECUTE IMMEDIATE来运行所需的语句。
https://stackoverflow.com/questions/31650235
复制相似问题