delete数据为啥那么慢
delete数据慢的原因主要是因为MySQL的默认调度策略中,写入操作优先于读取操作。对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。而对某张数据表的多个读取操作可以同时地进行。因此,delete操作相当于先查找再移除,导致速度较慢。
为了解决delete数据删除慢的问题,可以采取以下措施:
1. 对要删除的数据表创建索引,以提高查找速度。
2. 代码中先获取要删除的主表mianid,删除的条件原来使用in,改为用游标遍历删除,删除条件改为=,走了索引删除。
3. 如果是删除全表数据,可以考虑使用Truncate命令处理,特别是对于千万甚至是亿级数据的表。
4. 如果是部分数据删除,可以创建临时表,将保留的数据插入临时表,然后删除原表,再将临时表重命名。但这需要在该表没有业务访问的时间段进行。
5. 对于小部分删除,可以考虑使用逻辑删除(添加一个del字段用于标识删除状态),然后再空闲时间段用定时器去删除del被标识的数据。