truncate和delete的区别,简略
本文最后更新于 2024-07-23,文章内容可能已经过时。
基本概念
truncate: DDL操作,删除表中的所有数据
delete: DML操作,逐行删除数据
执行效率
truncate: 更快,不记录删除日志,重置自增ID值
delete: 逐行执行,记录删除日志,可能影响性能
数据恢复与回滚
truncate: 不能回滚,不会触发触发器
delete: 可以回滚,会触发触发器
空间占用与释放
truncate: 释放空间但只复制表结构
delete: 不释放空间,每次删除一行都会更新日志
使用场景
truncate: 适合需要立即生效的场景,如数据清理或表重建前准备
delete: 适合需要保留历史记录的场景,如数据恢复或备份前的彻底删除
事务日志记录
truncate: 只记录页的释放信息
delete: 记录每行被删除的信息,有助于回滚操作
自增ID值处理
truncate: 自增ID值从1开始计数
delete: 自增ID值保留原来的最大数值
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员听醉
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果