数据库中truncate与delete的区别与联系
2024-09-27 20:25:42
昨天被问到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
最新文章
- [PHP源码阅读]strpos、strstr和stripos、stristr函数
- css中的负边距
- 常用聚类算法(一) DBSCAN算法
- 无法将Win7安装到GPT分区下解决办法
- zabbix 修改管理员用户密码
- php获取json文件数据并动态修改网站头部文件meta信息 --基于CI框架
- delphi控件安装与删除
- Jqeury获取table当前行与指定列
- SSH公钥认证登录
- SQL Server未找到或无法訪问server问题解决
- servlet 项目 ,,启动没问题,,但是,一请求也面就报错误。。。。求解决。。。。。。。。。。。。。各种百度,都没解决了啊。。。。。急急急急急急急急急急急急急急急急急急
- prototype/constructor/__proto__之prototype简单应用
- SRM475 - SRM479(1-250pt,500pt)
- 读取sd卡下图片,由图片路径转换为bitmap
- Javascript使用postMessage对iframe跨域通信
- Centos虚拟机安装分区分配
- oracle配置监听图形界面不出来解决方法
- js获取文件后缀
- 后缀html和htm文件的区别
- GDAL——命令使用专题——gdalinfo命令
热门文章
- JavaScript 判断输入是否为中文的函数
- JAVA card 应用开发(二) 在项目添加APPLET
- NSObject的hash方法
- 解决 dotNetZip 解压乱码的问题,支持ZIP分卷解压缩
- window.name实现的跨域数据传输 JavaScript跨域总结与解决办法
- linux shell grep/awk/sed 匹配tab
- vs2010使用svn--浅谈AnkhSvn
- 2018.08.28 ali 梯度下降法实现最小二乘
- RxJava RxPermissions 动态权限 简介 原理 案例 MD
- 利用blob对象实现大文件分片上传