高手的Oracle大批量删除数据的方法

文章作者 100test 发表时间 2007:03:14 13:59:41
来源 100Test.Com百考试题网


批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。

下面是我的删除过程,我的数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。

首先创建一下过程,使用自制事务进行处理:

create or replace procedure delBigTab

(

p_TableName in varchar2,

p_Condition in varchar2,

p_Count in varchar2

)

as

pragma autonomous_transaction.

n_0delete number:=0.

begin

while 1=1 loop

EXECUTE IMMEDIATE

0delete from ||p_TableName|| where ||p_Condition|| and rownum <= :rn

USING p_Count.

if SQL%NOTFOUND then

exit.

else

n_0delete:=n_0delete   SQL%ROWCOUNT.

end if.

commit.

end loop.

commit.

DBMS_OUTPUT.PUT_LINE(Finished!).

DBMS_OUTPUT.PUT_LINE(Totally ||to_char(n_0delete)|| records 0deleted!).

end.


相关文章


如何保持Oracle数据库的优良性能
Oracle9i数据库中实体化视图简介
在安装10g的时候命令提示符消失?
OracleSQL性能优化系列介绍(下)
高手的Oracle大批量删除数据的方法
Oracle数据库最优化参数缩短反应时间
怎样自动将数据导入Oracle数据库
Oracle数据库中分区表的操作方法详解
OracleJob任务异常原因分析及其解决(2)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛