首页 > 数据库技术 > 详细

数据库中truncate与delete的区别与联系

时间:2014-03-30 10:29:26      阅读:456      评论:0      收藏:0      [点我收藏+]

昨天被文档truncate与delete的区别,truncate没用过,回去百度了一下,才知道还有这个一种语句。

truncate table命令将快速删除数据表中的所有记录(保留数据表结构)。这种快速删除与delete from 数据表的删除全部数据表记录不一样,delete命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate命令删除的数据是不可以恢复的。咱们做一个测试:

1、建一个带有自增字段的表,加入100万数据

2、分别用TRUNCATE和DELETE删除全部数据(非别执行DELETE FROM `TABLENAME`; TRUNCATE FROM `TABLENAME`;DROP FROM `TABLENAME`;)

3、然后再向表里插入一条数据

最直观是:

1、TRUNCATE TABLE是非常快的

2、TRUNCATE之后的自增字段从头开始计数了,而DELETE的仍保留原来的最大数值

相同点:

  truncate和不带where子句的delete, 以及drop都会删除表内的数据。

不同点:

1、truncate和delete只删除数据不删除表的结构,而drop语句不仅删除全部数据还删除了表的结构; 

2、delete操作会放到rollback segement中,事务提交之后才生效也就是可以回滚。而truncate,drop操作之后原数据不放到rollback segment中,不能回滚

3、delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动,也就是自增ID不变化

4、速度,一般来说: drop>; truncate >; delete

数据库中truncate与delete的区别与联系,布布扣,bubuko.com

数据库中truncate与delete的区别与联系

原文:http://www.cnblogs.com/liqiu/p/3633214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!