十万级别查询量 志强 e5 CPU 单核 100% 超 3 分钟才能跑完.
优化后 10 秒内可以跑完.
思路 通过临时表创建索引用 空间换时间避免频繁读取原表信息
- /* 正常写法 */
- DELETE from activity where id not in ( SELECT id from activity_data);
- /* 优化后写法 */
- DELETE from activity where id not in (select * from (SELECT id from activity_data) t);
MySQL 删除原则
not exist 比 not in 执行效率高 (线上项目保持正确性, 没有尝试网上有人推荐使用 not exist 由于改动大没有尝试)
truncate 比 delete 执行效率高
来源: http://www.jianshu.com/p/5ac2d1dfe80a