前几天在做一个功能,因为之前往数据库里添加了不正确的数据,所以想要将表里的数据删除一下。脑袋里想也没想,直接就用了个Delete,由于数据量真的很大,足足删除了将近半个小时,这时候,我就知道自己错了。数据没有删除完,因为不愿意等了,所以直接又取消了。但是我又查询了一下表里的数据,这时候数据已经清空了。数据删除了也没有执行commit。
所有又添加新数据,添加了32条,执行了个查询语句,这32条语句足足用了25.983秒,原因很明显,由于没有提交事务,而且用的delete语句,所有没有真正删除,写到日志里,还可以回滚。
明明32条数据,缺用了这么长时间。
解决办法:使用truncate语句,全部删除,将隐藏在日志中的那些数据也全部清除。
那么delete语句和Truncate语句有什么区别呢?
| delete | trcunate |
语法 | Delete from TableName | Truncate Table TableName |
执行速度 | 慢 | 快 |
删除形式 | 一条一条删除 | 一次性删除整个页 |
所用的日志空间 | 多 | 少 |
是否可以加条件 | 可以加条件 | 不可以加条件 |
数据库的 SQL语句 还有很多,我们不能只局限于使用 select 、 Update 、 delete 、 Insert ,还有很多语句,我们都要学会使用,才能给我们的工作带来效率,给我们的程序带来效率。工作中多多积累经验,及时一个简单的 SQL 语句,也是我们宝贵的财富。