百萬級別數據表,進行有條件的數據刪除,這個時候採用delete from的一次性刪除的方法是很不明智的:spa
一、delete操做會被完整記錄到日誌裏,它須要大量空間和時間日誌
二、若是刪除中間發生中斷,一切刪除會回滾(在一個事務裏)code
三、同時刪除多行,記錄上的鎖也許會被提高爲排它表鎖,從而阻礙操做完成以前有對這個表的操做(有時候會妨礙正常的業務)因此通常採起分批刪除的方法blog
因此,經過分批次地刪除數據能夠大大提高刪除效率,縮短刪除時間:事務
declare @perCount int; set @perCount = 6000; while 1=1 begin delete top(@perCount) from 表 where CrtDate < '2020-12-23'; if(@@rowcount<@perCount) break; end