MySQL中 truncate、drop和delete区别
truncate
- 执行速度快,删除所有数据,但是保留表结构
- 不记录日志
- 事务不安全,不能回滚
- 可重置自增主键计数器
drop
- 执行速度较快,删除整张表数据和结构
- 不记录日志
- 事务不安全,不能回滚
- 直接删除自增主键计数器
delete
- 执行速度慢,一行一行删,可删除部分也可删除全部
- 记录日志
- 事务安全,可以回滚
- 不可重置自增主键计数器
测试:
生成一个有 1,000,000 行数据的测试表,随机生成数据
删除速度比较
DELETE | TRUNCATE | DROP |
---|---|---|
可以发现执行速度方面: truncate < drop < delete
附:
本文所指的 truncate
是用作截断表的关键字,而不是mysql函数 truncate()
函数 truncate(X, D)
的作用是截断小数 X 小数点后前 D 位数
TRUNCATE(1.2345678, 2)
# 结果: 1.23