聊聊sql优化的15个小技巧

832e86e30a412b0670bfab986709a287.png

若有收获,请记得分享和转发哦

sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。

如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句,因为它的改造成本相对于代码来说也要小得多。

那么,如何优化sql语句呢?

这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。

2d61cb080a39b16cf534b9d21b05419b.png

1 避免使用select *

很多时候,我们写sql语句时,为了方便,喜欢直接使用select *,一次性查出表中所有列的数据。

反例:

select * from user where id=1;

在实际业务场景中,可能我们真正需要使用的只有其中一两列。查了很多数据,但是不用,白白浪费了数据库资源,比如:内存或者cpu。

此外,多查出来的数据,通过网络IO传输的过程中,也会增加数据传输的时间。

252267634b8b0090677463b4cd30c2b7.png

54171c4232fc5667a1f5ef736850685d.png

ca9882b6bcea87d5602e591b878c3486.png

40b5ffeddcfc7bd2564d6c751ef990d1.png

6f48497ee369fb75345975f6b81f62fc.png

4dd6598d83a2df6ce2d0c85e4a686a24.png

26b06e8004c5d60338b84d8fddbc0853.png

03654a1c2d7cdac93cd0d33ee2464919.png

d84507c9d58dbb082c76121af92c9ea3.png

b107960c8f76895d8f1ec7b0837eb7d9.png

88ab05f60698d216ce4fd4971b8c658f.png

c8067dbbd15c6aeb9d657f8d9a47d02d.png

644b864a1d8476e2f7a0ba6204547a83.png

fdfa52ff8d3a40e655e6a64c2840fa08.png

b6f5f91a0bba0c08cb6c584c9e3965c9.png

7e993047c65372dd91411d0f7312dbdc.png

55ab6c954afecb0d9b9172ce85e757e4.png

0974eafc14a4d032210ff53547062935.png

e29cf31c2f19ed33fc38b49cba5a8262.png

3d191780b48eff67883ce1f0a7bee12c.png

6eb8817a116e92dc7437ab244c44b15b.png

695b70a668470a07781d4a7944719516.png

e01adf40e9b06b5ef86d4305b2458619.png

ad44fc4b2b7ebe28011b1896ba4acf6f.png

explain select * from `order` where code='002';

结果:95b58a07fa5db388fa2d45070b056dff.png通过这几列可以判断索引使用情况,执行计划包含列的含义如下图所示:04db0d2c94c0dade8c2bfa4b8bfc1717.png

说实话,sql语句没有走索引,排除没有建索引之外,最大的可能性是索引失效了。

下面说说索引失效的常见原因:ad93d9857018f3e4130e01888c5f9626.png如果不是上面的这些原因,则需要再进一步排查一下其他原因。

此外,你有没有遇到过这样一种情况:明明是同一条sql,只有入参不同而已。有的时候走的索引a,有的时候却走的索引b?

没错,有时候mysql会选错索引。

必要时可以使用force index来强制查询sql走某个索引。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值