在数据量比较大的时候,例如到达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

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐