MySQL 中 Delete 和 Truncate 有什么区别?
发布于 2022-09-21 08:59:01
关注者
0
被浏览
19
5 个回答
-
delete 是DML 是事物操作,会将删除的数据记录进redo日志,再进行删除,如果有触发依赖的话,会触发触发器:truncate是DDL语句,不会写入日志,和drop一样,不会触发触发器。很难恢复数据。
-
Delete是属于DDL语言,执行的时候不需要提交直接执行,直接全表删除。 Truncate是属于DML需要,执行的时候需要COMMIT提交,可以对表进行部分数据删除。如果误操作可以回滚来恢复数据。 使用效率上Delete快,Truncate慢🤧
-
Delete 属于DML,执行操作没有提交的话,数据会存在redo和undo表空间之中,可以rollback,提交了也可以使用内闪回! Truncate 属于DDL,会隐式提交,不能回滚,不能触发触发器
-
delete是删除表中的指定条件的数据,truncate是一次性清空表内的数据,相当于重置一张空表
-
delete DML语句可以回滚 ,需要计入日志, 可以清空表,也可以删除部分数据(速度慢) truncate DDL语句不可以回滚 ,不计入日志,只能清空表(速度快)