如何优化mysql慢查询语句_MySQL - 慢查询语句的优化

一、开启并获取慢查询

(1)开启慢查询

show variables like ‘%query%’;

通过修改配置文件将 slow_query_log 设置为on,开启慢查询日志

通过设置 long_query_time 设置合适的慢查询时间(单位为秒)

通过设置 slow_query_log_file 设置慢查询日志的文件位置

(2)获取慢查询语句

两种方式:

一种直接到上面设置的慢查询日志中逐条查找汇总;

另一种方式是使用 mysqldumpslow 工具,该工具是 mysql 官方标配

# 找到你的 mysqldumpslow 工具所在位置

find/-name mysqldumpslow

# 进入工具所在目录

# 执行打印慢sql

mysqldumpslow

202c7e1a13f228133dc1fb0049c6635d.png

二、具体优化

通过 explain 分析 sql 的执行情况,主要关注type 、possible_keys、 key,rows 、Extra 这四个信息

注:先运行看看是否真的很慢,注意设置SQL_NO_CACHE

1、首先看扫描行数rows

如果扫描的行数和得到的结果集行数相差非常多,则说明没有建立合适的索引,这时应该为where条件下的列或order by 条件下的列创建索引

2、看possible_keys 和 keys

possible_keys 指的是mysql在执行时可能使用的索引,key 表示执行时实际使用的索引

如果 possible_keys 比 key 多,应该先看看 sql 是否符合最左匹配原则,让索引尽可能多的用上

3、看额外信息 Extra

根据Extra 具体分析

4、看type

type 表达了sql执行时的访问类型(MySQL决定如何查找表中的行)

到了这一步,实际上该建的索引都已经建好了,剩下的就是通过调整sql的编写方式,使其达到更优质的查询类型

三、案例

注:因为每个系统的数据量、数据表结构、数据库的配置等信息都不一样,因此适合别人系统的未必一定适合自己系统,不过我们可以参考别人的案例来反省自己的慢sql。看一遍,一定会有所收获的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值