truncate table A和A之间的区别是什么?

时间:2010-08-10 07:41:37

标签: sql-server-2005

  

可能重复:
  SQL Server - bulk delete (truncate vs delete)
  What’s the difference between TRUNCATE and DELETE in SQL

截断表A和从A删除有什么区别?哪一个更好用于从表中删除记录。

1 个答案:

答案 0 :(得分:0)

可以在TRUNCATE table的Microsoft文档中轻松找到此答案:

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

  • 使用较少的事务日志空间。 DELETE语句一次删除一行,并在事务日志中为每个已删除的行记录一个条目。 TRUNCATE TABLE通过释放用于存储表数据的数据页来删除数据,并仅在事务日志中记录页面解除分配。
  • 通常使用较少的锁。使用行锁执行DELETE语句时,表中的每一行都被锁定以进行删除。 TRUNCATE TABLE总是锁定表和页面,但不是每行。
  • 无一例外,表格中都留有零页面。执行DELETE语句后,表仍可以包含空页。例如,如果没有至少一个独占(LCK_M_X)表锁,则无法释放堆中的空页。如果删除操作不使用表锁,则表(堆)将包含许多空页。对于索引,删除操作可以留下空页,尽管这些页面将通过后台清理过程快速释放。