想知道SQL Script的工作原理

时间:2014-05-19 02:02:15

标签: sql sql-server

请您解释下面的脚本是什么意思?

它似乎删除了特定表中的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

1 个答案:

答案 0 :(得分:2)

这是基于ROWCOUNT以200,000批量从表中删除行。请注意,使用此功能不是一个好主意,因为未来的版本可能不支持它。文档为here

在锁定和记录事务方面,从表中删除行会产生大量开销。将它分解成更小的部分往往更有效。

变量@@ROWCOUNT是实际删除的行数,因此这将被删除,直到所有行都消失。