oracle性能優化----處理大數據量數據


 

 場景:對2千萬個數據,修改他們的名字加上后綴“生日”。
普通sql:
 
update calendar_info set title =concat(title, '生日') where specialtype = 1 and not regexp_like(title, '生日');

優化sql:

declare
type rid_Array is table of rowid index by binary_integer;
v_rid rid_Array;
v_Count PLS_INTEGER := 0;
v_Cur sys_refcursor;
v_SQL varchar2(2000) := 'select t.rowid from calendar_info t where specialtype = 1 and title not like ''%生日''';
begin
open v_Cur for v_SQL;
loop
fetch v_Cur bulk collect
into v_rid limit 1000;
forall i in 1 .. v_rid.count()
update calendar_info set title =title||'生日' where rowid = v_rid(i);
v_Count := v_Count + sql%rowcount;
commit;
exit when v_Cur%notfound;
end loop;
commit;
close v_Cur;
dbms_output.put_line(v_Count);
exception
when others then
rollback;
end;

 

 

http://blog.csdn.net/dba_waterbin/article/details/8581448

當處理數據量非常大的時候,我們使用存儲過程進行操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM