在数据量比较大的时候,例如到达5000W条或更多,删除其中几千万条就会处理的非常慢,可能执行DELETE好几个小时都没处理完毕。可以采用脚本形式处理:

declare
    maxrows number default 1000;
    delete_cnt number default 0;
begin
    select count(1)/maxrows into delete_cnt from ITEMS  where  CREATED_TIME between TO_DATE('2023-12-17 00:00:01', 'yyyy-mm-dd hh24:mi:ss') and TO_DATE('2023-12-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss');
    for i in 1..TRUNC(delete_cnt)+1
        loop
            delete ITEMS where CREATED_TIME between TO_DATE('2023-12-17 00:00:01', 'yyyy-mm-dd hh24:mi:ss') and TO_DATE('2023-12-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss') and rownum <= maxrows;
            commit;
        end loop;
end;

执行后等待,可能时间也挺久,但是是一直在删除中,等待即可

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐