truncate、delete与drop的区别
2016-06-26 14:43
381 查看
truncate、delete与drop的区别
相同点:
1.truncate和不带where子句的delete,以及drop都会删除表内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
1.truncate和delete只是删除数据不删除表的结构。drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid。 (总之一句话,truncate与delete都是删除全部的数据,但是表还存在,但是drop是全部删除,表不存在了)
2.就删除的速度来说:drop > truncate >delete 删除的时候truncate比delete使用的系统和事务日志资源少。delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。truncate table通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
3.在安全的角度来讲:谨慎使用drop和truncate,尤其是没有备份的情况下,不让你哭都来不及了。谨慎。
使用上,想删除部分数据行用
delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
truncate、delete与drop的区别
相同点:
1.truncate和不带where子句的delete,以及drop都会删除表内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
1.truncate和delete只是删除数据不删除表的结构。drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid。 (总之一句话,truncate与delete都是删除全部的数据,但是表还存在,但是drop是全部删除,表不存在了)
2.就删除的速度来说:drop > truncate >delete 删除的时候truncate比delete使用的系统和事务日志资源少。delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。truncate table通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
3.在安全的角度来讲:谨慎使用drop和truncate,尤其是没有备份的情况下,不让你哭都来不及了。谨慎。
使用上,想删除部分数据行用
delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
相同点:
1.truncate和不带where子句的delete,以及drop都会删除表内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
1.truncate和delete只是删除数据不删除表的结构。drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid。 (总之一句话,truncate与delete都是删除全部的数据,但是表还存在,但是drop是全部删除,表不存在了)
2.就删除的速度来说:drop > truncate >delete 删除的时候truncate比delete使用的系统和事务日志资源少。delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。truncate table通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
3.在安全的角度来讲:谨慎使用drop和truncate,尤其是没有备份的情况下,不让你哭都来不及了。谨慎。
使用上,想删除部分数据行用
delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
truncate、delete与drop的区别
相同点:
1.truncate和不带where子句的delete,以及drop都会删除表内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
1.truncate和delete只是删除数据不删除表的结构。drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid。 (总之一句话,truncate与delete都是删除全部的数据,但是表还存在,但是drop是全部删除,表不存在了)
2.就删除的速度来说:drop > truncate >delete 删除的时候truncate比delete使用的系统和事务日志资源少。delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。truncate table通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
3.在安全的角度来讲:谨慎使用drop和truncate,尤其是没有备份的情况下,不让你哭都来不及了。谨慎。
使用上,想删除部分数据行用
delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
相关文章推荐
- eclipse启动Tomcat时警告:WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property
- nginx基于域名的虚拟主机实战配置
- 搭建本机的SVN服务, svn: E200002: line 19: Option expected的解决方案
- 学习OpenGL
- 网站后端.Flask.实战-社交博客开发-邮件确认?
- linux用户和用户组
- CentOS AltArch 7发布,支持 PPC64、PPC8LE、ARMhfp、i686 和 AArch64
- CentOS AltArch 7发布,支持 PPC64、PPC8LE、ARMhfp、i686 和 AArch64
- 应用Web.Config配置网站
- linux,apache,php,mysql常用的查看版本信息的方法
- shell下的grep工具
- 谈谈运维体系
- OpenvSwitch概念和原理
- 每天一个Linux命令(19)--find命令
- Tomcat_修改代码后tomcat是否需要重启
- 关于一个人创建网站的历程(1)
- centos7 卸载openJDK 安装jdk7
- 在 CentOS7 上部署 zookeeper 服务
- nginx 错误, flume 集锦,太多bugs netstat -ntpl
- 【工具安装】-CentOS-安装python包管理工具pip