TRUNCATE TABLE 和 DELETE

转载 2011年01月21日 15:35:00

TRUNCATE TABLE 和不带 WHERE 的 DELETE 功能是一样的,都是删除表中的所有数据,不过 TRUNCATE TABLE 速度更快,占用的日志更少,这是因为 TRUNCATE TABLE 直接释放数据页并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每一条记录的删除。

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

  • 所用的事务日志空间较少。

    DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一个项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。

  • 使用的锁通常较少。

    当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。

  • 如无例外,在表中不会留有任何页。

那么可不可以用 TRUNCATE TABLE 代替不带 WHERE 的 DELETE 呢?在以下情况是不行的:
1、要保留标识的情况下不能用 TRUNCATE TABLE,因为 TRUNCATE TABLE 会重置标识。
2、需要使用触发器的情况下不能使用 TRUNCATE TABLE ,它不会激发触发器。
3、对于由 FOREIGN KEY 约束引用的表(即主键所在的表,不是外键所在的表)不能使用 TRUNCATE TABLE。
4、对于参与了索引视图的表不能使用 TRUNCATE TABLE ,注意指索引视图,并非普通视图。

 

 

用法:truncate table 表名

DROP TABLE、TRUNCATE TABLE和DELETE的区别

声明:本篇文章来自百度知道答案整理,附上链接 http://zhidao.baidu.com/link?url=zPEGUyOzPprMej31Yc50dXKzYEkBHijignfVk8sdUUPN...
  • u013815649
  • u013815649
  • 2015年12月23日 10:13
  • 4925

truncate与delete的区别?(deletefrom table和truncate table tablea的区别!)

truncate是DDL語言.delete是DML語言 DDL語言是自動提交的.命令完成就不可回滾.truncate的速度也比delete要快得多. 详细说明: 相同点:truncate和不带wh...
  • a382064640
  • a382064640
  • 2014年03月14日 22:46
  • 4017

sql使用truncate和delete清空table的区别(总结)

1.truncate在各种表上无论是大的还是小的都非常快。如果有rollback命令,delete 将会被撤销,而truncate不会被撤销。...
  • gumengkai
  • gumengkai
  • 2016年04月07日 00:08
  • 3247

truncate table与delete区别

truncate table需要drop table权限,它是完全清空一张表。 从逻辑上看,truncate table同delete 一样,或是drop table +create table一样。...
  • ls346949630
  • ls346949630
  • 2014年10月30日 16:51
  • 1617

mysql中删除表记录delete from和truncate table的用法区别

mysql中删除表记录delete from和truncate table的用法区别: MySQL中有两种删除表中记录的方法,一种是delete from语句,另一种是truncate table...
  • u013217071
  • u013217071
  • 2016年05月19日 12:03
  • 2185

Truncate table,Delete From table,与Drop table的区别

1  delete table和delete from table的异同    delete table 与delete from table此两条语句没有实质的区别,都是删除表中的记录。  ...
  • lvxiaoting
  • lvxiaoting
  • 2015年12月18日 17:03
  • 1989

数据库中truncate与delete的区别

而DELETE和TRUNCATE TABLE都是删除表中的数据的语句,它们的不同之处在于: 1、TRUNCATE TABLE比DELETE的速度快; 2、TRUNCATE TABLE 是删除表...
  • u011707402
  • u011707402
  • 2016年08月06日 11:23
  • 1301

oracle truncate table 和delete from table 的 不同点 以及 truncate table 在存储过程里面的用法

truncate truncate table语句将删除指定表中所有数据,因此也称其为清除表数据语句,一般格式如下 truncate table name 由于truncate语句将删除表中的所有数据...
  • BIBIHAHA
  • BIBIHAHA
  • 2015年12月26日 10:45
  • 1138

MySQL delete/truncate/drop的差别分析

用户想要删除数据表可以使用delete、truncate以及drop来删除数据。从功能上讲不带where子句的delete、truncate和drop是相似的。三者之间的不同之处主要包括以下几点:1、...
  • wanglei_storage
  • wanglei_storage
  • 2016年06月28日 16:25
  • 410

truncate 与 delete 、drop 【PLSQL中truncate用法】

注意事项 1.在oracle 中数据删除后还能回滚是因为它把原始数据放到了undo表空间, 2.DML语句使用undo表空间,DDL语句不使用undo,  而delete是DML语句,tr...
  • cicada688
  • cicada688
  • 2011年12月19日 09:37
  • 6918
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TRUNCATE TABLE 和 DELETE
举报原因:
原因补充:

(最多只允许输入30个字)