当前位置: 首页 > 图文教程 > 数据库 > Oracle > Oracle中大批量删除数据的方法

Oracle
Oracle数据库索引创建要做到三个适当
解析Oracle中的概念:同义词、序列与视图
讲解七种数据库中Select Top的使用方法
浅谈在Windows环境下Kill掉Oracle的线程
OracleDatabaseLinks的实现方法
合理创建Oracle数据库的索引
关于PGA的功能
Oracle教程:SecureFile的功能
Oraclesequence在Hibernate如何使用
找回消失的联机日志文件
控制文件对于Oracle的重要性
对于Oracle的错误印象
Oracle批量fetch的小技巧
如何彻底的删除Oracle表
Oracle数据库中创建合理的数据库索引
Oracle数据库中数据如何存储
解决Oracle性能优化中的问题
Oracle 基本知识轻松学
Oracle认证:利用bulkcollect实现cursor批量fetch
控制文件多路复用保证Oracle数据库正常运行

Oracle中大批量删除数据的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 60 ::
收藏到网摘: n/a

写一个循环删除的过程。
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;
调用:
SQL> set timing on
SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11100000','10000');
PL/SQL procedure successfully completed.
Elapsed: 00:00:18.54
方法虽好,但我应用在一个亿级数据库时还是觉得慢得不行。就算删一点点数据也觉得好象挺慢的。