Oracle中大批量刪除數(shù)據(jù)的方法
更新時(shí)間:2007年03月21日 00:00:00 作者:
寫一個(gè)循環(huán)刪除的過程。
create or replace procedure delBigTab(p_TableName in varchar2,p_Condition in varchar2,p_Count in varchar2)
as
pragma 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;
調(diào)用:
SQL> set timing on
SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11100000','10000');
PL/SQL procedure successfully completed.
Elapsed: 00:00:18.54
方法雖好,但我應(yīng)用在一個(gè)億級數(shù)據(jù)庫時(shí)還是覺得慢得不行。就算刪一點(diǎn)點(diǎn)數(shù)據(jù)也覺得好象挺慢的。
create or replace procedure delBigTab(p_TableName in varchar2,p_Condition in varchar2,p_Count in varchar2)
as
pragma 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;
調(diào)用:
SQL> set timing on
SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11100000','10000');
PL/SQL procedure successfully completed.
Elapsed: 00:00:18.54
方法雖好,但我應(yīng)用在一個(gè)億級數(shù)據(jù)庫時(shí)還是覺得慢得不行。就算刪一點(diǎn)點(diǎn)數(shù)據(jù)也覺得好象挺慢的。
相關(guān)文章
Oracle實(shí)現(xiàn)分頁查詢的SQL語法匯總
這篇文章主要介紹了Oracle實(shí)現(xiàn)分頁查詢的SQL語法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08Oracle設(shè)置DB、監(jiān)聽和EM開機(jī)啟動(dòng)的方法
這篇文章主要介紹了Oracle設(shè)置DB、監(jiān)聽和EM開機(jī)啟動(dòng)的方法,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04DBF 文件恢復(fù) ORACLE 數(shù)據(jù)庫的方法
這篇文章主要介紹了DBF 文件 ORACLE 數(shù)據(jù)庫恢復(fù)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01計(jì)算機(jī)名稱修改后Oracle不能正常啟動(dòng)問題分析及解決
更改計(jì)算機(jī)名稱后,oracle不能正常啟動(dòng)的相信有很多的朋友都有遇到過這種情況吧,接下來為大家介紹下詳細(xì)的解決方法感興趣的朋友可以參考下哈2013-04-04