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 表名

相关文章推荐

Oracle truncate table 与 delete tabel的区别

Oracle truncate table 与 delete tabel的区别  一、 1.delete产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rol...

Truncate Table 与DELETE FROM

TRUNCATE TABLE namename 是要截断的表的名称或要删除其全部行的表的名称。 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除...

DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE TABLE语句的区别,供您参考。 在M...

MySQL数据库的更新语句DELETE与TRUNCATE TABLE

在MySQL(和PHP搭配之最佳组合)中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRU...
  • xtjsxtj
  • xtjsxtj
  • 2014年05月15日 10:32
  • 958

TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别

1.DELETE  ・DML语言  ・可以回退  ・可以有条件的删除 DELETE FROM 表名   WHERE 条件 2.TRUNCATE TABLE  ・DDL语言  ・无法回退...

MySQL DELETE语句和TRUNCATE TABLE语句的区别之处

在MySQL中有两种方法可以删除数据,一种是MySQL DELETE语句,另一种是MySQL TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUN...

delete from和truncate table的区别

MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE TABLE语句的区别,供您参考。 ...
  • jhq1990
  • jhq1990
  • 2013年11月13日 09:55
  • 693

Oracle truncate table 与 delete tabel的区别(转)

Oracle truncate table 与 delete tabel的区别(转)  一、 1.delete产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback...

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

1.truncate在各种表上无论是大的还是小的都非常快。如果有rollback命令,delete 将会被撤销,而truncate不会被撤销。...

delete from和truncate table的区别

在mysql中,删除表的常见方式有两种: (1)delete from语句, (2)truncate table语句。 delete from语句可以和条件查询的where配合使用,用于筛选需要删...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TRUNCATE TABLE 和 DELETE
举报原因:
原因补充:

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