如何在pl-sql中并行运行一个查询?
我需要所有的流程......
答案 0 :(得分:5)
您可以创建JOB以便以并行性运行相同的查询。
CREATE OR REPLACE PROCEDURE target_deletion
IS
number_of_the_job NUMBER;
BEGIN
DBMS_JOB.submit (number_of_the_job, 'begin stored_procedure_for_deletion; end;', SYSDATE);
END;
/
请假设您在Oracle数据库中有一个完全如下的存储过程:
stored_procedure_for_deletion
如果您希望使用PARALLELISM多次执行该存储过程,则必须创建一个名为“TARGET_DELETION”(如上所述)的存储过程,该过程使用PL / SQL块创建一个调用的新作业: / p>
开始stored_procedure_for_deletion;端;
...执行名为“stored_procedure_for_deletion”的程序。
作业立即启动,因此您可以连续多次运行存储过程target_deletion,以便以并行性运行相同的过程。
答案 1 :(得分:3)
如果在实例级别启用,Oracle本身具有并行查询功能:
http://www.orafaq.com/wiki/Parallel_Query_FAQ
编辑:目前还不清楚你要做什么。也许您希望 异步 查询执行,因此Oracle作业建议是正确的(请参阅另一个答案)。
Oracle并行功能不是异步的,它只是说优化器在查询执行中使用一定数量的CPU来加速结果。例如:
select /*+ PARALLEL(DOGS,4) */ * from DOGS where A>20
以4级并行度执行查询。