小白白话技术之MYSQL查询优化

         这是一篇关于MYSQL查询优化的一些思路白话介绍篇,希望直白的语言有助于你更容易理解MYSQL的查询优化技巧。

         关于MYSQL的应用,增删改查中我们这里要介绍的就是查,怎样设计查询才算合理,怎样的查询是合理的查询,如何对一个查询评判是否合理已经对其进行优化改进就是这里要讨论的。

其实关于关于查询优化有很多技巧,这里会介绍一些,但肯定不会是全部。首先,要明白的是一个合理的查询是很有好处的,对性能影响很大。往往我们工作中有些工程师不太重注这点,只要能满足业务就可以,其实这是不对的。

我们知道一个查询任务给到MYSQL,MYSQL其实做了很多事情,我们不妨叫为子任务,这些子任务都会消耗时间,所有这些消耗加起来就是这个查询任务的性能。显然,如果我们尽量减少不必要的消耗,那么性能就会更好,所以这里第一个优化思路就是减少不必要的子任务的时间消耗。具体怎么做呢?我们下面举几个例子:

  1. 比如不要去查询多余的数据行或者数据列,怎么做呢,比如用limit,比如明确查询的列。
  2. 比如不要去分析计算多余的数据。
  3. 比如不要去扫描多余的数据行,比如要走索引。
  4. 比如要尽量利用MYSQL的缓存机制,比如尽量用重复的查询。

对于复杂的查询,我们要评估是否可以换种方式,比如说把一个复杂查询拆分成若干个小查询,因为有些情况下小查询比大查询对服务器性能的影响要小的多。关联查询是否可以拆成独立查询,这样一些查询是否就可以走数据库缓存了。

那么如果遇到了查询性能问题,我们怎么办呢?我们可以通过慢查询日志找出慢的语句,我们也可以通过执行计划了解查询语句的执行过程情况。

     当然,还有很多小技巧,这里我们大致罗列一下:

          比如说子查询的话尽量不要用in而是用exists,因为in的外表有可能会全表扫描。

     比如说distinct会是低性能的一个关键字。

     比如说可以使用优化器提示hint来控制执行计划。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值