Mysql数据库drop、truncate和delete的区别
嘻嘻发布于2019-09-21
最后更新于2019年9月17日
浏览今天在做公司项目的时候,产品要求清理数据库,删除试运行期间产生的数据,删就删,那在选择删除的时候是用drop、truncate、还是delete呢?这里就要探究一下三者之间的异同:
相同点:
- 都可以实现删除数据的功能
不同点:
- Truncate是一个DDL命令,而DELETEE是一个DML命令
- Truncate不能被rollback,而DELETE是可以被rollback
- runcate不能触发数据库里面定义的触发器,而DELETEDELETE可以
- Truncate操作的执行速度比DELETE快
- Truncate是不可以加条件的,而DELETE可以加条件(where)
- DROP是直接从数据目录下删除数据,所以执行速度更快,DROP>TRUNCATE>DELETE, 同时DROP和TRUNCATET都会删除索引文件,而DELETE不会

通过以上的比较,对于数据量小的情况下,三个命令都可以实现,效率影响不大,对于数据较大(一般在百万以上了) ,要选择合适的命令,避免高射炮打蚊子。