问题:
有大批量数据要删除,delete太慢了。
知识点
删除方式之delete
1.灵活性高,可以对表数据进行部分删除;
例:
delete from tb_name where id=1;
2.效率低:属于DML语句,逻辑性差,逐行进行删除,因为可以事务回滚,它在binglog记录,必然效率慢。
3.支持触发器:可以触发triggers;
4.自增字段保留原有最大值,并继续往后增长
5.支持事务:删除行数据是不释放空间的,每删除一行数据,就在事务日志中为删除的那一行数据做记录,因此可以使用rollback语句回滚;
删除方式之truncate
1.灵活性低,只能对整表数据删除,保留表结构。(如果存在外键约束,就会删除失败)
例:
truncate table tb_name;
2.效率高:属于DDL语句,需要drop权限,会隐式提交;
3.事务:不能rollback回滚数据;
4.无法触发triggers;
5.自增字段从头开始技术;
删除方式之drop
1.属于DDL语句,可以把整个表清空(谨慎使用)
在速度上的区别:drop最快,其次truncate,delete最慢。