Mysql
MySQL怎么分析SQL的性能(expain 查询慢sql)?慢sql日志怎么开启?expain的type字段中,什么样的需要优化
explain 是 MySQL 提供的一个用于查看查询执行计划的工具,可以帮助我们分析查询语句的性能瓶颈,找出慢 SQL 的原因。
使用方式也非常简单,在 select 语句前加上 explain
关键字就可以了。
1 | explain select * from students where id =9 |
type 列:表示 MySQL 在表中找到所需行的方式,性能从最优到最差分别为:system > const > eq_ref > ref > range > index > ALL。
- system,表只有一行,一般是系统表,往往不需要进行磁盘 IO,速度非常快
- const、eq_ref、ref:这些类型表示 MySQL 可以使用索引来查找单个行,其中 const 是最优的,表示查询最多返回一行。
- range:只检索给定范围的行,使用索引来检索。在
where
语句中使用bettween...and
、<
、>
、<=
、in
等条件查询type
都是range
。 - index:遍历索引树读取。
- ALL:全表扫描,效率最低,最好优化。
慢sql日志怎么开启?
慢 SQL 日志的开启方式有多种,比如说直接编辑 MySQL 的配置文件 my.cnf 或 my.ini,设置 slow_query_log 参数为 1,设置 slow_query_log_file 参数为慢查询日志的路径,设置 long_query_time 参数为慢查询的时间阈值。
1 | [mysqld] |
然后重启 MySQL 服务就好了,也可以通过 set global 命令动态设置。
1 | SET GLOBAL slow_query_log = 'ON'; |