浅谈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优化的思路呗~

相关阅读:

谈谈MySQL显示类型转换

写会MySQL索引

MySQL表设计踩过的坑!

浅谈MySQL表结构设计

 

这里写图片描述

 扫码关注,一起进步

个人博客: http://www.andyqian.com

 

转载于:https://my.oschina.net/u/1462914/blog/1615293

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值