次と同じ動作をするOracleプロシージャがあります。
create or replace
PROCEDURE My_TEST_PROCEDURE
(
cur out sys_refcursor
)
AS
BEGIN
open cur for
SELECT * FROM MYTABLE1
WHERE MYTABLE1.SOMEROWNAME NOT IN
(SELECT SOMEROWNAME FROM MYTABLE2);
END My_TEST_PROCEDURE;
しかし、この2つのテーブルには多くのデータがあり、それぞれに約300000行あります。そのため、完了するまでにかなりの時間がかかります。その時間を減らすために私は何ができますか。sys_refcursorを宣言し、次のようにこのカーソルにデータを読み込んでみました。
create or replace
PROCEDURE My_TEST_PROCEDURE
(
cur out sys_refcursor
)
IS
DECLARE EXISTING_ITEMS SYS_REFCURSOR;
BEGIN
OPEN EXISTING_ITEMS FOR
SELECT SOMEROWNAME FROM MYTABLE2;
open cur for
SELECT * FROM MYTABLE1
WHERE MYTABLE1.SOMEROWNAME NOT IN
EXISTING_ITEMS;
END My_TEST_PROCEDURE;
ただし、今回はORA-00932エラーが発生します。私に何ができる?
前もって感謝します。