SqlServer-truncate && delete && drop 的区别

有些人在删除表的所有记录的时候,喜欢这样来——不给DELETE 语句提供WHERE 子句,表中的所有记录都将被删除。但这种方法是不可取的,正确的应该使用

TRUNCATE TABLE tb_name

为什么要用TRUNCATE TABLE 语句代替DELETE语句?

因为:虽然TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE  DELETE 速度快,且使用的系统和事务日志资源少。  

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

 

TRUNCATE,DELETE,DROP放在一起比较:

 

TRUNCATE TABLE:删除内容、释放空间但不删除定义。

DELETE TABLE:删除内容不删除定义,不释放空间。

DROP TABLE:删除内容和定义,释放空间。

 

truncate删除表比较快,但删除的数据不能恢复,只能删除表中的所有数据

delete删除比truncate慢,删除的数据可以恢复,后面可以跟where条件删除某些指定记录。

posted @ 2015-04-02 10:16  [0]  阅读(285)  评论(0编辑  收藏  举报