Mysql中EXPLAIN解读

本文解析了如何利用EXPLAIN关键字查看SQL执行计划,包括select_type的不同含义,type的联接类型优化,以及关键字段如id、possible_keys和Extra的作用。通过实例了解MySQL优化器的工作原理。
摘要由CSDN通过智能技术生成

Explain介绍

当EXPLAIN与可解释的语句一起使用时,MySQL将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL解释了它将如何处理该语句,包括有关如何连接表以及以何种顺序连接表的信息。在select语句之前增加explain关键字,执行后MySQL就会返回执行计划的信息,而不是执行sql。可以通过Explain来查看sql语句中的索引执行情况。

执行结果显示列

在这里插入图片描述

  • id:语句唯一标识。id列的编号是select的序列号,有几个select就会有几个id,并且id是按照select出现的顺序增长的,id列的值越大优先级越高,id相同则是按照执行计划从上向下执行,id为空则是最后执行的。
  • select_type:查询类型
  • table:表名
  • partitions:当前查询匹配记录的分区。对于未分区的表,返回null
  • type:针对单表的查询方式(全表扫描,索引)
  • possible_keys:可能的索引选择
  • key:实际选择的索引
  • key_len:索引的长度
  • ref:索引的哪一行被引用了
  • rows:估计要扫描的列
  • filtered:表示符合查询条件的数据百分比
  • Extra:附加信息

select_type

当多个select语句进行嵌套时,select_type会有不同的取值,常见的有如下几种:

  • simple:不包含子查询和union的简单查询
  • primary:复杂查询中最外层的select
  • subquery:包含在select中的子查询
  • derived:包含在from子句中的子查询
  • union:在union中的第二个和随后的select

type

表示联接类型,不同类型之间的性能不同,从好到坏依次是:
system > const > eq_ref > ref>… > range > index > all
一般来说,得保证查询至少达到range级别,最好能达到ref。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值