oracle批量删除表里的历史数据的方法

项目中有个需求需要每个月末定时去删除一张表里的历史数据,

刚开始就写了一个简单的delete语句,然后起一个job定时去调用,

后来被告知历史数据量很大,所以从性能和安全上考虑对sql进行了如下修改:

declare cursor id_key_cursor is
    select id_key 
      from x_table 
    where x_column = "xxx"
begin
    for v_to_del in id_key_cursor loop
        delete x_table
        where id_key = v_to_del.id_key
    if mod(id_key_cursor%rowcount, 5000) = 0
        then commit;
    end if;
    end loop;
    commit;
end;

上面将处理的数据每5000笔提交一次,分批处理;

id_key可以是x_table的主键,也可以是row_id;

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐