百萬級別資料表,進行有條件的資料洗掉,這個時候采用delete from的一次性洗掉的方法是很不明智的:
1、delete操作會被完整記錄到日志里,它需要大量空間和時間
2、如果洗掉中間發生中斷,一切洗掉會回滾(在一個事務里)
3、同時洗掉多行,記錄上的鎖也許會被提升為排它表鎖,從而阻礙操作完成之前有對這個表的操作(有時候會妨礙正常的業務)所以一般采取分批洗掉的方法
所以,通過分批次地洗掉資料可以大大提升洗掉效率,縮短洗掉時間:
declare @perCount int; set @perCount = 6000; while 1=1 begin delete top(@perCount) from 表 where CrtDate < '2020-12-23'; if(@@rowcount<@perCount) break; end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/239525.html
標籤:其他
上一篇:SQL中的觸發器–它會觸發什么?
下一篇:何為“混合云”?
