我有一个SQL语句,其中使用了一个检查函数(Check-Function)
,执行时间相当长。
现在我想并行执行检查函数(Check-Function)
,但是它却不起作用。
我犯了什么错误?
以下示例需要5秒才能执行完,但据我理解,由于并行处理,应该只需要1秒左右。
用于测试的代码片段:
CREATE TABLE PERSON AS
SELECT LEVEL AS ID, 'Person_'||LEVEL AS NAME
FROM DUAL
CONNECT BY LEVEL <= 5;
CREATE OR REPLACE FUNCTION LONGCHECKFUNC(ID NUMBER)
RETURN NUMBER IS
BEGIN
--Doing some very heavy Checks....
DBMS_LOCK.SLEEP(1 /*second*/);
RETURN 1;
END;
SELECT /*+PARALLEL(person, 5) */ *
FROM PERSON
WHERE LONGCHECKFUNC(ID)=1;