简历写上:熟练掌握SQL的相关优化及索引的使用,并且能够完成主从集群配置。
为什么SQL需要优化
1、查询性能低
2、执行时间过长(使用LINK的后果)
3、等待时间过长(多线程现象,线程池被占用,请求等待执行)
4、SQL写的太差(尤其体现在多表查询上)
5、索引失败
6、服务器参数(缓存、线程数)设置不合理
7、项目需求不合理
8、等。。。
4、5是程序员能优化的,其他的和DBA相关
程序员写代码时能够做的只有对写SQL尽可能的做出优化,执行效率更高,有效的使用索引,重点放在写SQL上
SQL的执行过程
参考资料:https://www.cnblogs.com/annsshadow/p/5037667.html
简化
- 接收传入的SQL
- 查看该SQL对应的结果在缓存中是否存在
- 由解析器来解析当前SQL,最终形成初步的解析树
- 再由预处理器对解析树进行调整,完成占位符赋值等操作
- 查询优化器对最终的解析树进行优化,包括调整SQL顺序等
- 根据优化后的结果得出查询语句的执行计划,就是查询数据的具体实施方案,交给查询的执行引擎
- 查询执行引擎调用存储引擎提供的API,最后由存储引擎来完成数据的查询,然后返回结果
SQL的执行顺序
写SQL的顺序
select > from > join > on > where > group by > having > order by > limit
解析SQL时的顺序
from > on > join > where > group by >