DECLARE @Count INT
DECLARE @Date DATETIME
SET @Date='2023-01-03 19:50:41.247'
SET @Count=1000 ---每次删除数据10W
WHILE 1=1
BEGIN
DELETE TOP(@Count) FROM dbo.Lot WHERE CreateDate<@Date
IF(@@ROWCOUNT<@Count) ---@@ROWCOUNT返回受上一语句影响的行数
BREAK;
PRINT CONVERT(VARCHAR(50),GETDATE(),120)
WAITFOR DELAY '00:00:03' ---等待3秒再继续删除
END
PRINT '删除完成'
备注:聚集索引加在Where条件字段列,这样删除会相对加快效率。
PS:大数据表最好还是分库分表【分布式储存】,这样更科学合理。