清空表的两种方式
MySQL有两种清空表的方式。
清空(truncate)
delete from 表名;
删除(delete)
truncate table 表名;
两种方式的区别
删除方式
-
truncate
是整体删除,不扫描表,相当于重新创建了表,只保留了表的结构,然后删除掉原有表,删除速度较快 -
delete
是逐条删除,会扫描全表,会根据条件判断,删除速度较慢
自增字段
-
truncate
后自增字段重新从 1
开始 -
delete
保持自增最大值
日志
-
truncate
操作不写入日志,所以清空的数据无法恢复 -
delete
操作写入日志,删除的数据可以恢复
触发器
-
truncate
不激活触发器 -
delete
激活触发器
参考
【1】:MySQL 清空表(truncate)与删除表中数据(delete) 详解
【2】:mysql清空表数据的两种方式和区别