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
相关文章
相关标签/搜索