如果要删除成百万,成千万条记录.使用单纯的delete.那简直,几乎是不可能的. 第一:delete语句每条都记录日志. 第二:锁表.如果该表还有人频繁使用.那很快就处异常了. 解决方案: 1.最快的方法是使用truncate table A,由于truncate只记录很少的日志.所以非常之快.但问题是truncate不能带where子句.它用来清空整个表的数据.oracle 据说有delete from table nolog语句.听说也很快. 2.分批执行. 分批执行,这是个策略问题.由于一个delete是一个事务.如果非常大批量执行,执行半小时没还没完成你不管了,或出异常.那就全部回滚到解放前了. 分批执行就是蚂蚁搬家战术。 2005示例:
|
|