请您解释下面的脚本是什么意思?
它似乎删除了特定表中的200,000行但是如何连续删除?
如果它删除了200,000行,并且还有更多行要删除,则会继续。
但我不知道它是如何运作的。
SET ROWCOUNT 200000;
WHILE (1=1)
BEGIN
DELETE
FROM Table
WHERE event_time<= '2013-12-31';
IF @@ROWCOUNT = 0
BREAK
END
SET ROWCOUNT 0
答案 0 :(得分:2)
这是基于ROWCOUNT
以200,000批量从表中删除行。请注意,使用此功能不是一个好主意,因为未来的版本可能不支持它。文档为here。
在锁定和记录事务方面,从表中删除行会产生大量开销。将它分解成更小的部分往往更有效。
变量@@ROWCOUNT
是实际删除的行数,因此这将被删除,直到所有行都消失。