Oracle中大批量刪除資料的方法

2021-04-12 19:58:31 字數 915 閱讀 4996

寫乙個迴圈刪除的過程。

create or replace procedure delbigtab(p_tablename in varchar2,p_condition in varchar2,p_count in varchar2)

aspragma autonomous_transaction;

n_delete number:=0;

begin

while 1=1 loop

execute immediate

'delete from '||p_tablename||' where '||p_condition||' and rownum <= :10000'

using p_count;

if sql%notfound then

exit;

else

n_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 delbigtab; 

呼叫:sql> set timing on

sql> exec delbigtab('hs_dlf_downlog_history','numdlflogguid < 11100000','10000');

pl/sql procedure successfully completed.

elapsed: 00:00:18.54

方法雖好,但我應用在乙個億級資料庫時還是覺得慢得不行。就算刪一點點資料也覺得好象挺慢的。

Oracle中大批量刪除資料的方法

批量刪除海量資料通常都是很複雜及緩慢的,方法也很多,但是通常的概念是 分批刪除,逐次提交。下面是我的刪除過程,我的資料表可以通過主鍵刪除,測試過delete和for all兩種方法,for all在這裡並沒有帶來效能提高,所以仍然選擇了批量直接刪除。首先建立一下過程,使用自製事務進行處理 creat...

C 中大批量資料匯入

database db databasefactory.createdatabase using sqlconnection connection sqlconnection db.createconnection bulk.writetoserver dspayment.tables 1 bulk...

Oracle儲存過程刪除大批量資料

參考 批量刪除海量資料通常都是很複雜及緩慢的,方法也很多,但是通常的概念是 分批刪除,逐次提交。下面是我的刪除過程,我的資料表可以通過主鍵刪除,測試過delete和for all兩種方法,for all在這裡並沒有帶來效能提高,所以仍然選擇了批量直接刪除。操作如下 建立日誌記錄表 create ta...