如何做慢查询优化?

如何做慢查询优化?

这个问题可以说是一个高频问题,总是被问到,今天来总结下这个问题。

慢查询,就是 SQL 查询中耗时比较大的一类查询,MySQL 提供了慢查询日志 slow_query_log,

它会记录耗时大于我们设置的阈值的查询语句

set global slow_query_log = 1

如果我们想调优,把未走索引的查询也记录:

log_queries_not_using_indexes

1、慢查询日志的内容

在这里插入图片描述

2、为什么会出现慢查询,或者说慢查询的原因

  • 等待时间长:锁的使用粒度过大、或者说出现死锁等,导致Lock_time 过长
  • 执行时间长:索引失效、没有覆盖索引、关联查询太多 join、服务器调优及各个参数的设置

3、慢查询的优化思路

在这里插入图片描述

在这里插入图片描述

如何合理设计并利用索引

首先要考虑的是,不适合创建索引的列,就不要创建索引了,比如区分度不大的列、频繁更新的列、没有被 order by、group by、where 子句用到的。

其次是要考虑索引失效的情况:

  • 联合索引没有符合最左匹配原则
  • 对索引使用左或左右模糊查询
  • 对索引使用函数
  • 对索引进行表达式计算
  • or条件后面的列没有用索引
    对索引使用函数
  • 对索引进行表达式计算
  • or条件后面的列没有用索引
  • 索引的类型转换导致索引失效
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值