单表数据量大,delete删除部分数据比较慢,解决办法

单表数据量大,想删除全部分数据,执行delete 语句where条件,比较慢,使用以下语句。

declare  
   cursor mycursor is SELECT  ROWID FROM Ebk_Bgt_Frame_D_beifen a WHERE  a.create_date<='20160904'  order by rowid;--------按ROWID排序的Cursor,删除条件是XXX=XXXX,根据实际情况来定。
   type rowid_table_type is  table  of rowid index by pls_integer;
   v_rowid   rowid_table_type;
BEGIN
   open mycursor;
   loop
     fetch   mycursor bulk collect into v_rowid  limit 5000; --------每次处理5000行,也就是每5000行一提交
     exit when v_rowid.count=0;
     forall i in v_rowid.first..v_rowid.last
        delete from Ebk_Bgt_Frame_D_beifen  where rowid=v_rowid(i);
     commit;
   end loop;
   close mycursor;
END;
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值