Mysql数据库drop、truncate和delete的区别

今天在做公司项目的时候,产品要求清理数据库,删除试运行期间产生的数据,删就删,那在选择删除的时候是用drop、truncate、还是delete呢?这里就要探究一下三者之间的异同:
相同点:
  • 都可以实现删除数据的功能
不同点:
  1. Truncate是一个DDL命令,而DELETEE是一个DML命令
  2. Truncate不能被rollback,而DELETE是可以被rollback
  3. runcate不能触发数据库里面定义的触发器,而DELETEDELETE可以
  4. Truncate操作的执行速度比DELETE快
  5. Truncate是不可以加条件的,而DELETE可以加条件(where)
  6. DROP是直接从数据目录下删除数据,所以执行速度更快,DROP>TRUNCATE>DELETE, 同时DROP和TRUNCATET都会删除索引文件,而DELETE不会
通过以上的比较,对于数据量小的情况下,三个命令都可以实现,效率影响不大,对于数据较大(一般在百万以上了) ,要选择合适的命令,避免高射炮打蚊子。

Redis学习资源列表汇总
Mysql Like查询优化