昨天被问到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

最新文章

  1. [PHP源码阅读]strpos、strstr和stripos、stristr函数
  2. css中的负边距
  3. 常用聚类算法(一) DBSCAN算法
  4. 无法将Win7安装到GPT分区下解决办法
  5. zabbix 修改管理员用户密码
  6. php获取json文件数据并动态修改网站头部文件meta信息 --基于CI框架
  7. delphi控件安装与删除
  8. Jqeury获取table当前行与指定列
  9. SSH公钥认证登录
  10. SQL Server未找到或无法訪问server问题解决
  11. servlet 项目 ,,启动没问题,,但是,一请求也面就报错误。。。。求解决。。。。。。。。。。。。。各种百度,都没解决了啊。。。。。急急急急急急急急急急急急急急急急急急
  12. prototype/constructor/__proto__之prototype简单应用
  13. SRM475 - SRM479(1-250pt,500pt)
  14. 读取sd卡下图片,由图片路径转换为bitmap
  15. Javascript使用postMessage对iframe跨域通信
  16. Centos虚拟机安装分区分配
  17. oracle配置监听图形界面不出来解决方法
  18. js获取文件后缀
  19. 后缀html和htm文件的区别
  20. GDAL——命令使用专题——gdalinfo命令

热门文章

  1. JavaScript 判断输入是否为中文的函数
  2. JAVA card 应用开发(二) 在项目添加APPLET
  3. NSObject的hash方法
  4. 解决 dotNetZip 解压乱码的问题,支持ZIP分卷解压缩
  5. window.name实现的跨域数据传输 JavaScript跨域总结与解决办法
  6. linux shell grep/awk/sed 匹配tab
  7. vs2010使用svn--浅谈AnkhSvn
  8. 2018.08.28 ali 梯度下降法实现最小二乘
  9. RxJava RxPermissions 动态权限 简介 原理 案例 MD
  10. 利用blob对象实现大文件分片上传