Oracle中大批量刪除數(shù)據(jù)的方法
更新時(shí)間:2007年03月21日 00:00:00 作者:
寫一個(gè)循環(huán)刪除的過(guò)程。
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è)億級(jí)數(shù)據(jù)庫(kù)時(shí)還是覺(jué)得慢得不行。就算刪一點(diǎn)點(diǎn)數(shù)據(jù)也覺(jué)得好象挺慢的。
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è)億級(jí)數(shù)據(jù)庫(kù)時(shí)還是覺(jué)得慢得不行。就算刪一點(diǎn)點(diǎn)數(shù)據(jù)也覺(jué)得好象挺慢的。
相關(guān)文章
Oracle參數(shù)設(shè)置教程之set和reset的實(shí)用案例
最近在學(xué)習(xí)oracle,學(xué)習(xí)中遇到了一些覺(jué)著有必要記錄下的內(nèi)容,所以下面這篇文章主要給大家介紹了關(guān)于Oracle參數(shù)設(shè)置教程之set和reset實(shí)用案例的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看吧。2017-10-10
oracle臨時(shí)表空間的作用與創(chuàng)建及相關(guān)操作詳解
Oracle可能會(huì)需要使用到一些臨時(shí)存儲(chǔ)空間,用于臨時(shí)保存解析過(guò)的查詢語(yǔ)句以及在排序過(guò)程中產(chǎn)生的臨時(shí)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于oracle臨時(shí)表空間的作用與創(chuàng)建及相關(guān)操作的相關(guān)資料,需要的朋友可以參考下2022-07-07
Oracle11.2 命令行手工最簡(jiǎn)創(chuàng)建數(shù)據(jù)庫(kù)的過(guò)程
Oracle 11.2命令行手工最簡(jiǎn)創(chuàng)建數(shù)據(jù)庫(kù)的過(guò)程 命令行手工最簡(jiǎn)創(chuàng)建數(shù)據(jù)庫(kù)的過(guò)程2009-09-09
ORACLE 常用函數(shù)總結(jié)(80個(gè))
ORACLE 常用函數(shù)總結(jié)(80個(gè)),大家可以參考下。2009-09-09
Oracle11g audit審計(jì)配置全過(guò)程
Oracle審計(jì)功能是數(shù)據(jù)庫(kù)安全管理的重要組成部分,能夠幫助管理員監(jiān)控和記錄數(shù)據(jù)庫(kù)操作,確保安全和合規(guī),審計(jì)分為標(biāo)準(zhǔn)審計(jì)、細(xì)粒度審計(jì)和統(tǒng)一審計(jì)等類型,可通過(guò)設(shè)置AUDIT_TRAIL參數(shù)和相關(guān)命令開(kāi)啟和配置,同時(shí),審計(jì)記錄需要定期查看和清理,以維護(hù)系統(tǒng)性能和存儲(chǔ)空間2024-10-10
oracle中函數(shù) trunc(),round(),ceil(),floor的使用詳解
這篇文章主要介紹了oracle中函數(shù) trunc(),round(),ceil(),floor的使用詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03

