truncate和delete区别与联系
truncate和delete区别与联系
delete from `表名`
truncate `表名`
- 都能删除全部数据但不会删除表结构
- truncate重新设置自增列,计数器归0
- truncate不会影响事务
使用方面
- delete 写日志,大量删除记录时比较慢,不是真的从数据库里面删除数据,只是给这些数据加个unused的标签,因此他是可恢复的
- truncate 不写日志,比较快,是真正的删除数据,因此不可恢复.删了就没了
但是有一种情况你不能用 truncate,
如果你的table里面有自增列,并且这个列的值被其他表的记录引用(比例历史记录表),那就不能用 truncate,
因为 truncate 还会把自增列的当前值也重置。