我需要删除包含一堆文件的表的所有行。由于行数和文件大小,执行简单DELETE FROM
操作或多或少会锁定计算机。我正在寻找一个可以在不锁定我的计算机的情况下完成此任务的 SQL 脚本,任何人都可以为我指出正确的方向吗?
先感谢您。
我需要删除包含一堆文件的表的所有行。由于行数和文件大小,执行简单DELETE FROM
操作或多或少会锁定计算机。我正在寻找一个可以在不锁定我的计算机的情况下完成此任务的 SQL 脚本,任何人都可以为我指出正确的方向吗?
先感谢您。
你试过了吗TRUNCATE
- 这将删除所有内容。
TRUNCATE TABLE yourTable
来自MSDN
TRUNCATE TABLE 类似于没有 WHERE 子句的 DELETE 语句;但是,TRUNCATE TABLE 速度更快,使用的系统和事务日志资源更少。
与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:
使用较少的事务日志空间。
DELETE 语句一次删除一个行,并在事务日志中为每个删除的行记录一个条目。TRUNCATE TABLE 通过解除分配用于存储表数据的数据页来移除数据,并且仅在事务日志中记录页解除分配。
通常使用较少的锁。
当使用行锁执行 DELETE 语句时,表中的每一行都被锁定以进行删除。TRUNCATE TABLE 总是锁定表和页,但不是每一行。
无一例外,零页留在表中。
执行 DELETE 语句后,表仍然可以包含空页。例如,如果没有排他 (LCK_M_X) 表锁,就无法释放堆中的空页。如果删除操作不使用表锁,则表(堆)将包含许多空页。对于索引,删除操作可能会留下空页面,尽管这些页面将通过后台清理进程快速释放。