一、开篇暴击:你的SQL正在谋杀服务器!"3秒的查询优化到30毫秒后,CTO当场给我涨薪30%!" 这可不是段子——上周刚用EXPLAIN揪出一个全表扫描的定时炸弹,拯救了公司凌晨崩盘的订单系统。本文中的每个优化技巧都经过千万级数据验证,文末更有独门调优脚本相赠!
首先要声明的就是,千万级数据对于MySQL来说就是不太合理的一个存在。优化MySQL千万级数据策略还是比较多的。分表分库创建中间表,汇总表修改为多个子查询这里讨论的情况是在MySQL一张表的数据达到千万级别。表设计很烂,业务统计规则又不允许把sql拆成多个子查询。
对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。