上周在做公司项目的时候,产品要求清理数据库,删除试运行期间产生的数据,删就删,那在选择删除的时候是用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不会
通过以上的比较,对于数据量小的情况下,三个命令都可以实现,效率影响不大,对于数据较大(一般在百万以上了) ,要选择合适的命令,避免高射炮打蚊子。
如果喜欢我们,记得关注我们哟~