什么是慢查询?如何优化?

1. 什么是慢查询?

慢查询,顾名思义,就是比较慢的查询,那什么是算是慢查询呢?不同的公司对于慢查询的定义不尽相同。

一般情况下,我们把查询时间超过1s的查询称为慢查询。

2. 优化SQL来减少慢查询

2.1. 索引优化

慢查询非常多的情况是由于SQL没有走适当的索引导致的。但是,即使加上索引,如果使用不正确,SQL语句在执行时依然不会走索引。哪些情况下SQL语句不走索引呢?

  1. WHERE条件中的1=1,查询条件永远为真,可能导致WHERE条件失效,进行全表查询;
  2. 使用函数或者隐式转化会导致不走索引;
  3. LIKE匹配通配符号在前面的时候,不走索引;
  4. 使用了否定条件;
  5. OR其中一个有索引,另一个没有的情况;
  6. 多列索引需要满足最左匹配原则;
  7. 两张表字符集不一样或者编码不一样,联表查询时;
  8. IN的内容过多,会不走索引;

2.2 拆解分批

如果数据量比较大,则可以尝试拆解分批的方式来减少慢查询:

  1. 多层嵌套查询改为多次查询;
  2. IN子查询影响查询性能,用JOIN方式代替;
  3. 一次查询数量过于庞大,拆成多次查询、拼装。
  4. 用了反向查询(比如NOT IN)或者IN语句参数集太多,可能会导致全表扫描,这种情况尽量拆分语句,或者内存中过滤解决;
  5. 将⼤字段、访问频率低的字段拆分到单独的表中存储,分离冷热数据;
  6. 分库分表;
  7. 归档;
  • 10
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kuo-Teng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值