文章詳情頁
高手的Oracle大批量刪除數(shù)據(jù)的方法
瀏覽:4日期:2023-11-12 17:52:23
批量刪除海量數(shù)據(jù)通常都是很復(fù)雜及緩慢的,方法也很多,但是通常的概念是:分批刪除,逐次提交。 下面是我的刪除過程,我的數(shù)據(jù)表可以通過主鍵刪除,測試過Delete和For all兩種方法,for all在這里并沒有帶來性能提高,所以仍然選擇了批量直接刪除。 首先創(chuàng)建一下過程,使用自制事務(wù)進行處理: create or replace procedure delBigTab(p_TableName in varchar2,p_Condition in varchar2,p_Count in varchar2)aspragma autonomous_transaction;n_delete number:=0;beginwhile 1=1 loopEXECUTE IMMEDIATE'delete from 'p_TableName' where 'p_Condition' and rownum <= :rn'USING p_Count;if SQL%NOTFOUND thenexit;elsen_delete:=n_delete + SQL%ROWCOUNT;end if;commit;end loop;commit;DBMS_OUTPUT.PUT_LINE('Finished!');DBMS_OUTPUT.PUT_LINE('Totally 'to_char(n_delete)' records deleted!');end;
標簽:
Oracle
數(shù)據(jù)庫
排行榜
