0

我需要删除包含一堆文件的表的所有行。由于行数和文件大小,执行简单DELETE FROM操作或多或少会锁定计算机。我正在寻找一个可以在不锁定我的计算机的情况下完成此任务的 SQL 脚本,任何人都可以为我指出正确的方向吗?

先感谢您。

4

1 回答 1

1

你试过了吗TRUNCATE- 这将删除所有内容。

TRUNCATE TABLE yourTable

来自MSDN

TRUNCATE TABLE 类似于没有 WHERE 子句的 DELETE 语句;但是,TRUNCATE TABLE 速度更快,使用的系统和事务日志资源更少。

与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:

使用较少的事务日志空间。

DELETE 语句一次删除一个行,并在事务日志中为每个删除的行记录一个条目。TRUNCATE TABLE 通过解除分配用于存储表数据的数据页来移除数据,并且仅在事务日志中记录页解除分配。

通常使用较少的锁。

当使用行锁执行 DELETE 语句时,表中的每一行都被锁定以进行删除。TRUNCATE TABLE 总是锁定表和页,但不是每一行。

无一例外,零页留在表中。

执行 DELETE 语句后,表仍然可以包含空页。例如,如果没有排他 (LCK_M_X) 表锁,就无法释放堆中的空页。如果删除操作不使用表锁,则表(堆)将包含许多空页。对于索引,删除操作可能会留下空页面,尽管这些页面将通过后台清理进程快速释放。

于 2012-08-15T20:11:58.420 回答