浅谈MySQL SQL优化

本文首发于我的微信公众号《andyqian》,期待你的关注

前言

有好几天没有写文章了,实在很差意思。以前就有朋友但愿我写写MySQL优化的文章。我迟迟没有动笔,主要是由于,SQL优化这个东西,很广,技巧也不少。本身在SQL优化方面的知识又还很欠缺。总以为还不到分享的。思考许久,仍是写一篇文章,记录一下。就算是抛砖引玉吧!微信

SQL优化

SQL优化是一个分析,优化,再分析,再优化的过程。站在执行计划的角度来讲,咱们这个过程,就是在不断的减小rows的数量。主要步骤有:并发

  1. 经过explain 来查看执行计划。经过这一步骤,咱们可以分析出,该语句有没有走索引,索引合不合理的重要依据。《读懂MySQL执行计划
  2. 缩小范围。例如使用 < > ,between …and。来缩小扫描范围。
    (对于该类,一般可优化于limit,时间范围等SQL,并且很是有效)。
  3. 减小链接数量 (对于链接查询,咱们必须尽量减小每一个子链接的结果集数量,只包含有效数据)。
  4. 避免类型转换。
    以前咱们就谈过,隐式类型转换是最容易疏忽的慢SQL。如何避免?你们能够参考以前的文章《谈谈MySQL隐式类型转换》。
  5. 对于主键连续时并且容许的状况下,咱们甚至可使用max(id)来代替count(*)来统计用户数。
  6. 用 in 代替 or, 少用like,避免使用函数运算。

系统拆分

对于互联网应用,特别是高并发应用来讲,咱们遇到多表链接致使慢SQL影响性能时。咱们不该一味的追求在SQL上如何优化。更应该考虑这样的设计是否合理,是否有拆分的可能性。因此,
我甚至认为:系统拆分才是解决慢SQL的终极方法。函数

报表库

其实呀,有些SQL是没法再进行优化的,为何这么说呢?没有在线运算,没有离线运算,统计报表如何出?在必定量级的数据表中,作统计报表。即便合理的索引,也会比较慢,这时建议将这些SQL放入特定的报表库执行。以避免形成主库压力。性能降低。对主流程形成影响。高并发

结语

SQL优化是一个比较广的话题且很是有意思的话。这篇文章主要给的是一些优化思路,不足的是并无给出更多的优化实例。等攒够了优化实例,会再次分享出来。性能

最后:在留言区也分享一下大家SQL优化的思路呗~优化

相关阅读:spa

谈谈MySQL显示类型转换.net

写会MySQL索引设计

MySQL表设计踩过的坑!3d

浅谈MySQL表结构设计

 

这里写图片描述

 扫码关注,一块儿进步

我的博客: http://www.andyqian.com

相关文章
相关标签/搜索