【MySQL进阶】Explain关键字详解

目录

Explain概念

执行计划各字段含义

1. id

 2.select_type

3.table

4.type

5. possible_keys

6. key

7. key_len

8.ref

9.rows

10.filtered

11.Extra


Explain概念

在 MySQL 中,EXPLAIN 关键字用于分析查询语句的执行计划,帮助用户理解查询的执行过程,优化查询性能。

使用方式如下:explain + sql

EXPLAIN select * FROM tb_user_info where id =1;

显示结果 

执行计划各字段含义

EXPLAIN select id FROM tb_user_info where id =1 union all select id from tb_product_info;

1. id

  • 如果 id 序号相同,从上往下执行
  • 如果 id 序号不同,序号大先执行
  • 如果两种都存在,先执行序号大,在同级从上往下执行
  • 如果显示 NULL,最后执行,表示结果集,并且不需要使用它来进行查询

 2.select_type

SIMPLE:简单的 select 查询

PRIMARY:复杂查询中最外层查询,比如使用 union 或 union all 时,id 为 1 的记录 select_type 通常是 primary,如上图所示

SUBQUERY:指在 select 语句中出现的子查询语句,结果不依赖于外部查询(不在 from 语句中),如下图所示

EXPLAIN select id,(select name from tb_product_info where id =1) FROM tb_user_info 

UNION:若第二个 SELECT 出现在 UNION 之后,则被标记为 UNION;若 UNION 包含在 FROM 子句的子查询中,那么第一个 SELECT 将被标记为 DERIVED 

3.table

表名或派生表的别名。

4.type

表示查询使用的类型,性能由好到坏依次是:system > const > eq_ref > ref > range > index > all,一般来说能达到 range 级别,最好能达到 ref 级别。

system:表只有一行(相当于系统表),是 const 类型的特例

create table sys(i int) engine = memory;
insert into sys values(2);
explain select * from sys;

const:针对主键或唯一索引的等值查询扫描,只返回一行数据

EXPLAIN select * from tb_user_info where id=1;

eq_ref:基于主键或唯一索引连接两个表,对于每个索引键值,只有一条匹配记录,被驱动表的类型为 eq_ref,这种类型只出现在 join

ref:非唯一性索引扫描,返回匹配多个符合条件的行

EXPLAIN select * from tb_user_info where user_name='李四';

range:范围扫描,检索指定范围的行,一般出现在 where 语句出现 between、< 、>、in 等的查询

EXPLAIN select * from tb_user_info where id>1;

index:只遍历索引树即可找到匹配的数据,比如下例中 user_id 就是 orders 表的索引

all:遍历全表找到匹配的数据

5. possible_keys

显示可能使用到的索引,实际不一定被使用

6. key

实际使用的索引

7. key_len

索引使用的字节数,可通过该列计算查询中使用的索引的长度,主要用于联合索引

8.ref

哪个列或常量与 key 一起用于查询。

9.rows

估计的扫描行数。

10.filtered

估计的返回行百分比。

11.Extra

扩展信息和额外操作。常见值包括:

  • Using index:表示查询覆盖索引。
  • Using where:表示使用了 WHERE 子句来过滤结果。
  • Using temporary:使用了临时表。
  • Using filesort:使用了文件排序。
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值