暂无图片
分享
suger
2023-07-09
drop、truncate 和 delete 的区别

drop、truncate 和 delete 的区别

收藏
分享
2条回答
默认
最新
Y
YanLang

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

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

drop语句将表所占用的空间全释放掉。

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

如果想删除部分数据用 delete,注意带上 where 子句,回滚段要足够大;

如果想删除表,当然用 drop;如果想保留表而将所有数据删除,如果和事务无关,用 truncate 即可;

如果和事务有关,或者想触发 trigger,还是用 delete;如果是整理表内部的碎片,可以用 truncate 跟上 reuse stroage,再重新导入/插入数据。 

暂无图片 评论
暂无图片 有用 0
暂无图片
suger
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏