我有一个 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;