1. delete后面可以跟where条件,truncate不能跟条件。
2. delete删除后有影响行数显示,truncate没有受影响行数显示。
3. delete是一条一条数据删除,效率低;
truncate是将整个表删除,在创建一个一模一样的表结构,效率高。
4. delete删除后自增在原来最大值基础上,truncate会重新开始。
5. delete删除是可以回滚的,truncate不能回滚。
总结:
1. 在速度上,一般来说,drop > truncate > delete
2. 在使用drop和truncate时一定要注意,虽然可以恢复,但是为了减少麻烦,还是慎用。
3. 如果想删除部分数据用delete,注意带上where子句,回滚段要足够大。
truncate | delete | |
条件删除 | 不支持 | 支持 |
事务回滚 | 不支持 | 支持 |
清理速度 | 快 | 慢 |
高水位重置 | 是 | 否 |