快速理解MySQL的explain用法

在这里插入图片描述


explain用于解析SQL语句的性能,分析出SQL中表的 读取顺序数据读取操作的操作类型有哪些索引可以使用哪些索引被实际使用以及 获取结果需要查询多少条记录

explain select …

在这里插入图片描述

id

里面的需要表示执行顺序,数值越大,执行优先级越高,数值相同则从上到下顺序执行

select_type

select_type表示查询的类型,主要用于区别普通查询、联合查询和子查询等复杂查询常见和常用的值有如下几种:

  • SIMPLE
  • PRIMARY
  • SUBQUERY
  • DERIVED
  • UNION
  • UNION RESULT

SIMPLE

简单的select查询,查询中不包含子查询或者UNION

PRIMARY

查询中包含任何复杂的子部分,最外层查询就会被标记为 PRIMARY

SUBQUERY

在SELECT或WHERE列表中包含了子查询

DERIVED

在FROM列表中包含子查询的将被标记为DERIVED

UNION

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

UNION RESULT

从UNION表获取结果的SELECT

table

指的就是当前执行的表

type

更加细粒度的查询类型,type的类型常用的几种类型性能从高到低分为:const > eq_ref > ref > range > index > all

const

表示通过索引一次就找到了,const 用于比较主键索引和唯一索引。因为只匹配一行数据,所以很快。

eq_ref

唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。

ref

非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,可能会找到多条记录与之匹配

range

范围查询,一般就是在where语句后面出现 >、 <、 in、 between 等关键字的查询。

index

全索引扫描,与all全表扫描区别是,index 遍历索引数,all遍历数据,因为数据文件会比索引文件小,所以通常Index 会比 all 快。

all

全表扫描

possible_keys 和 key

分别代表可能使用到的索引和实际使用到的缩影。

key_len

索引中使用的字节数,可以通过该列计算查询中使用的索引长度。

ref

显示索引的哪一列被使用到

rows

大致估算出找到所需结果需要读取的行数,也就是说越少越好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值