oracle数据的大批量删除方法
创建或替换程序delbigtab(p_tablename在VARCHAR2,p_condition在VARCHAR2,p_count)
作为
语用autonomous_transaction;
n_delete号:= 0;
开始
而1 = 1循环
立即执行
删除| | p_tablename | | ' ' | | p_condition | |和行号:10000
使用p_count;
如果SQL %不那么
出口;
其他的
n_delete:= n_delete + SQL %行数;
最后如果;
承诺;
结束循环;
承诺;
dbms_output.put_line('finished!);
dbms_output.put_line(而且| | to_char记录删除(n_delete)| |'!);
最后delbigtab;
呼叫:
设置时间
SQL> exec delbigtab('hs_dlf_downlog_history ','numdlflogguid<11100000,'10000);
已成功完成。
经过:00:00: 18.54
虽然这个方法很好,但是当我使用一亿级数据库的时候我仍然觉得很慢,即使你删除了一点点数据,它看起来也很慢。