Sql server 2008 这会破坏将删除分为更小的组的目的,所以我认为您希望将其放在内部。但是,如果您的需求指定在发生任何故障时回滚所有150万条记录,那么外部是您唯一的选择,在循环中没有任何意义。恢复模式是FULL。也许更改为SIMPLE然后运行DELETE会更快?这会更快,但会

Sql server 2008 这会破坏将删除分为更小的组的目的,所以我认为您希望将其放在内部。但是,如果您的需求指定在发生任何故障时回滚所有150万条记录,那么外部是您唯一的选择,在循环中没有任何意义。恢复模式是FULL。也许更改为SIMPLE然后运行DELETE会更快?这会更快,但会,sql-server-2008,Sql Server 2008,这会破坏将删除分为更小的组的目的,所以我认为您希望将其放在内部。但是,如果您的需求指定在发生任何故障时回滚所有150万条记录,那么外部是您唯一的选择,在循环中没有任何意义。恢复模式是FULL。也许更改为SIMPLE然后运行DELETE会更快?这会更快,但会清除现有的事务日志。可接受程度取决于您的业务需求。DB的停机时间可以接受吗?然后,您可以备份、更改恢复模型、运行删除操作,然后将恢复模型放回原处。恢复模型为FULL。也许更改为SIMPLE然后运行DELETE会更快?这会更快,但会清除现有的事务


这会破坏将删除分为更小的组的目的,所以我认为您希望将其放在内部。但是,如果您的需求指定在发生任何故障时回滚所有150万条记录,那么外部是您唯一的选择,在循环中没有任何意义。恢复模式是
FULL
。也许更改为
SIMPLE
然后运行
DELETE
会更快?这会更快,但会清除现有的事务日志。可接受程度取决于您的业务需求。DB的停机时间可以接受吗?然后,您可以备份、更改恢复模型、运行删除操作,然后将恢复模型放回原处。恢复模型为
FULL
。也许更改为
SIMPLE
然后运行
DELETE
会更快?这会更快,但会清除现有的事务日志。可接受程度取决于您的业务需求。DB的停机时间可以接受吗?然后,您可以备份、更改恢复模型、运行删除,然后将恢复模型放回原处。
while (1=1) begin
    delete top(1000)
        from YourTable
        where ...

    if @@rowcount < 1000 break
end /* while */