我有以下的PL/SQL過程:性能優化:每個VS FORALL
create or replace procedure processData (a_date Date, r_offset Number, r_limit Number) as
begin
for r in (select * from (select a.*, ROWNUM rnum from (select* from TABLE1 T1 where T1.date=a_date) a
where rownum <= r_limit) where rnum >= r_offset) loop
if (/*some condition on column values */) then
/* insert into A*/
else
/*insert into B*/
end if;
end loop;
end;
,你可以看到它與每個製作。
我現在想知道如何使用for-all語句:這將涉及在表變量內部收集數據,然後在填充這些變量之後,執行2個語句:一個用於表A,另一個用於表B.
這會大大提高我的程序性能嗎?
編輯: 我剛注意到這個程序一般來說非常慢!我嘗試處理10K條記錄,差不多30秒!一般問題在哪裏?
你試過了嗎?看來你應該能夠自己回答這個問題。 –
我是pl/sql的新手,這個腳本給了我,所以在挖掘之前我想知道它是否值得一試...(實際的程序比這個例子更復雜,有很多if分支機構等) – Phate
這不取決於表T1,大小,列,索引,統計數據嗎? – kevinsky