登录  /  注册
博主信息
博文 42
粉丝 3
评论 2
访问量 91559
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
drop、truncate、delete的区别
Whitney的博客
原创
988人浏览过

delete

delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中以便进行回滚操作

delete操作不会减少表或索引所占用的空间

delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录

delete语句为DML(data maintain Language),这个操作会被放到 rollback segment中,事务提交后才生效。如果有相应的 tigger,执行的时候将被触发

truncate

truncate table 一次性从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的,并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

表被truncate后,这个表和索引所占用的空间会恢复到初始大小

truncate 不能用于参与了索引视图的表。

drop

drop不会触发触发器

drop语句删除表结构及所有数据,并将表所占用的空间全部释放

drop语句将删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。

总结

1、在速度上,一般来说,drop>truncate>delete

2、在使用drop和truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。

3、如果想删除部分数据用delete,注意加上where条件;

4、如果想删除表,使用drop

5、如果想保留表而将所有数据删除,若和事务无关,用truncate即可;若和事务有关,或者想触发trigger,还是用delete

6、如果是整理表内部的碎片,可以使用truncate跟上reuse storage,再重新导入/插入数据。

7、truncate、drop是DLL(data define language),操作立即生效,原数据不放到 rollback segment中,不能回滚

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学