truncate table与delete区别

truncate table需要drop table权限,它是完全清空一张表。

从逻辑上看,truncate table同delete 一样,或是drop table +create table一样。使用truncate table删除全表数据,要比delete要快。使用truncate table清空数据,不能进行回滚,且不受表间外键约束限制。

truncate是DDL语句,而且delete是DML语句,两者区别如下:

1.truncate 是邮drop table+create table ,比使用delete一行行删除数据要快得多,特别是清空大数据的表。

2.truncate是一种隐匿提交,所以不能进行回滚。

3.若当前表有外键约束,truncate table 可以清空表中的所有数据,不受外键约束限制。

4.使用truncate table将自增ID置零,delete则不会。

5.在使用分区表时,截断表保存分区;也就是说,数据和索引文件删除并重新创建,在分区定义(.par)文件不受影响。

6.TRUNCATE TABLE语句不调用删除触发器。

参考:

http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html

http://dev.mysql.com/doc/refman/5.6/en/optimizing-innodb-ddl-operations.html

时间: 2024-10-03 14:05:32

truncate table与delete区别的相关文章

TRUNCATE TABLE 与 DELETE table 区别

语法 TRUNCATE TABLE name;参数  TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行. TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少. 原因: DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项. TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放. TRUNCATE TABLE 删除表中的所有行,但表结构

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

MySQL DELETE语句和TRUNCATE TABLE语句的区别 2010-10-08 16:05 佚名 互联网 字号:T | T 在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在. AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载! MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语

Truncate table、Delete与Drop table的区别

Truncate table.Delete与Drop table的区别 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少. DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放. TRUNCATE TABLE 删除表中的所有行

SQL中truncate table和delete的区别

TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源少. Delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放. TRUNCATE TABLE 删除表中的所有行,但表结构及其列.约束.索引等保持不变.新行标识所用的计数值重置为该列的

truncate table 和delete

delete table 和 truncate table 使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where<search_condition>] 将XS表中的所有行数据删除 delete XS 执行完后,发现XS表中的数据都删除了,但是表的结构什么都还在. truncate truncate table语句将删除指定表中所有数据,因此也称其为清除表数据语句,一般格式如下 truncate table name

truncate table和delete table 的区别

truncate table和不带 where 的 detele 功能一样,都是删除表中的所有数据. 但TRUNCATE TABLE 速度更快,占用的日志更少,这是因为 TRUNCATE TABLE 直接释放数据页并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每一条记录的删除. 那么可不可以用 TRUNCATE TABLE 代替不带 WHERE 的 DELETE 呢?在以下情况是不行的: 1.要保留标识的情况下不能用 TRUNCATE TABLE,因

truncate table 和delete * from的区别

区别主要两个 1.   Truncate 是整体删除, delete是逐条删除 2.   truncate不写服务器log,delete写服务器log,这就是为什么truncate要快过delete 所以,影响有:1. truncate 快2. truncate不激活 trigger 3.   truncate 重置 Identity

TRUNCATE TABLE 与 DELETE的区别

delete from aatruncate table aa 区别1.delete from后面可以写条件,truncate不可以2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页4.当使用行锁执行 DELETE 语句时,将锁定表中各行以

请说明SQLServer中delete from tablea &amp; truncate table tablea的区别

解答:两者都可以用来删除表中所有的记录.区别在于:truncate是DDL操作,它移动HWK,使HWK值为0,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花费较长时间. 原文地址:https://www.cnblogs.com/borter/p/9547538.html