如果要刪除成百萬,成千萬條記錄.使用單純的delete.那簡直,幾乎是不可能的.
第一:delete語句每條都記錄日志.
第二:鎖表.如果該表還有人頻繁使用.那很快就處異常了.
解決方案:
1.最快的方法是使用truncate table A,由于truncate只記錄很少的日志.所以非常之快.但問題是truncate不能帶where子句.它用來清空整個表的數(shù)據(jù).oracle 據(jù)說有delete from table nolog語句.聽說也很快.
2.分批執(zhí)行.
分批執(zhí)行,這是個策略問題.由于一個delete是一個事務(wù).如果非常大批量執(zhí)行,執(zhí)行半小時沒還沒完成你不管了,或出異常.那就全部回滾到解放前了.
分批執(zhí)行就是螞蟻搬家戰(zhàn)術(shù)。
2005示例: