对于MySQL层优化我一般遵从五个原则:
- 减少数据访问: 设置合理的字段类型,启用压缩,通过索引访问等减少磁盘IO
- 返回更少的数据: 只返回需要的字段和数据分页处理 减少磁盘io及网络io
- 减少交互次数: 批量DML操作,函数存储等减少数据连接次数
- 减少服务器CPU开销: 尽量减少数据库排序操作以及全表查询,减少cpu 内存占用
- 利用更多资源: 使用表分区,可以增加并行操作,更大限度利用cpu资源
总结到SQL优化中,就三点:
- 最大化利用索引;
- 尽可能避免全表扫描;
- 减少无效数据的查询;
理解SQL优化原理 ,首先要搞清楚SQL执行顺序:
1)Mysql语法(书写)顺序,即当sql中存在下面的关键字时,它们要保持这样的顺序:
select[distinct] from join(如left join) on where group by having union order by limit
2)Mysql执行顺序,即在执行时sql按照下面的顺序进行执行:
from on join where group by having select distinct union order by
sql语句通过 from 查找虚表,再通过 where 筛选数据 -> 分组 -> 聚合筛选 -> select 返回结果集 -> 去重 -> 排序



