03-MySQL explain

简述 MySQL 的执行计划 explain

详细可参考:https://blog.csdn.net/fenglepeng/article/details/103392319

  • 语法:explain + SQL语句
  • 作用:SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。
  • 示例:explain select * from rbac_userinfo where id=1;

执行计划是指一条 SQL 语句在经过 MySQL 查询优化器的优化会后,具体的执行方式。

EXPLAIN 并不会真的去执行相关的语句,而是通过 查询优化器 对语句进行分析,找出最优的查询方案,并显示对应的信息。

EXPLAIN 适用于 SELECTDELETEINSERTREPLACEUPDATE 语句,我们一般分析 SELECT 查询较多。

EXPLAIN 的输出格式如下:

1
2
3
4
5
6
7
mysql> EXPLAIN SELECT `score`,`name` FROM `cus_order` ORDER BY `score` DESC;
+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+----------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+----------------+
| 1 | SIMPLE | cus_order | NULL | ALL | NULL | NULL | NULL | NULL | 997572 | 100.00 | Using filesort |
+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+----------------+
1 row in set, 1 warning (0.00 sec)

各个字段的含义如下:

列名 含义
id SELECT 查询的序列标识符
select_type SELECT 关键字对应的查询类型
table 用到的表名
partitions 匹配的分区,对于未分区的表,值为 NULL
type 表的访问方法
possible_keys 可能用到的索引
key 实际用到的索引
key_len 所选索引的长度
ref 当使用索引等值查询时,与索引作比较的列或常量
rows 预计要读取的行数
filtered 按表条件过滤后,留存的记录数的百分比
Extra 附加信息

怎么验证 MySQL 的索引是否满足需求?

使用 explain 查看 SQL 是如何执行查询语句的,从而分析你的索引是否满足需求。


03-MySQL explain
https://flepeng.github.io/interview-41-数据库-41-MySQL-03-MySQL-explain/
作者
Lepeng
发布于
2020年8月8日
许可协议