SqlServer極速刪除百萬級別數據

百萬級別數據表,進行有條件的數據刪除,這個時候採用delete from的一次性刪除的方法是很不明智的:spa

一、delete操做會被完整記錄到日誌裏,它須要大量空間和時間日誌

二、若是刪除中間發生中斷,一切刪除會回滾(在一個事務裏)code

三、同時刪除多行,記錄上的鎖也許會被提高爲排它表鎖,從而阻礙操做完成以前有對這個表的操做(有時候會妨礙正常的業務)因此通常採起分批刪除的方法blog

因此,經過分批次地刪除數據能夠大大提高刪除效率,縮短刪除時間:事務

declare @perCount int; 
set @perCount = 6000;
while 1=1
begin
    delete top(@perCount) fromwhere CrtDate < '2020-12-23';
    if(@@rowcount<@perCount) break;
end
相關文章
相關標籤/搜索