Explain字段解析(Mysql)

explain + sql语句  了解次条sql语句的执行计划

字段如下:

  1. id(ID):表示查询中每个操作的序号。id值越大,则该操作在查询过程中发生得越晚

  2. select_type(SELECT类型):指定了查询使用的不同类型。常见的select_types包括SIMPLE、PRIMARY KEY、SUBQUERY等。

  3. table(表名):表名。

  4. partitions(分区):如果查询涉及到分区表,此列会显示所选取的分区。

  5. type(连接类型):指示MySQL使用的连接类型来获取结果集。常见的连接类型包括ALL、INDEX、RANGE、REF等。更好的连接类型可能需要索引支持。

  6. possible_keys(可能的键):显示可能应用于查询的索引列表

  7. key(实际使用的键):实际使用的索引

  8. key_len(键长度):索引的长度。对于BLOB和TEXT类型的索引,key_length的值为0。

  9. ref(引用):显示MySQL使用的索引的列或常量。

  10. rows(返回的行数):读取的行数。

  11. filtered(已过滤的百分比):WHERE过滤后,返回的行数与全部行数之间的比例。

  12. Extra(额外信息):提供有关查询的额外信息,例如文件排序、联合查询等。

id:

select查询的序列号:id值越大,优先级越高,id值相同时,则执行顺序自上而下

并不是有where子查询时id就会增加,具体何时会导致id增加暂时不清楚(下图)

select_type:查询的类型

 simple :简单子查询(很多博客说不使用union和子查询)---应该指的是不包括in关键字吧。。

  primary:最外层子查询

  subQuery:第一层子查询

derived:派生表(没有演示出来,网上找了好些例子,结果都是simple)

union:出现在union后面的查询

uniion result :union联合查询获取结果的select

table:查询对应的表,可以是一个结果集

partitions(5.7版本后):表使用的哪个分区(之前的案例都没有分区,所以都为null)

分区:把一张表物理上水平拆分,对应的文件可以放在同一磁盘,也可以放在不同磁盘

分表:水平分表和垂直分表,需要修改代码,查询时需要union

type:查询类型,普通查询,联合查询,子查询等。

  性能从差-->好:All,index,range,ref,eq_ref,system,null

All:全表查询(从磁盘中读取)

index:也是读取全表,但是是从索引中读取

range:只用一个索引来选择行,key列显示所用的索引,一般是在where子句里面出现between,and,>,<等查询符合

ref:用非唯一索引查出对应的所有行

eq_ref:

 同ref差不多,但返回结果只有一体记录

const:sql对查询部分进行优化,并转换为一个常量

system:同const差不多,但是表里面只有一条数据

possible_keys:查询涉及到的字段是存在索引,则索引被列出,但不一定被使用

key:实际使用的索引

key_len:索引使用的字节数,为索引字段的最大可能长度,并非实际使用值,即此值是根据表定义计算得出,而非根据实际使用的数据得出

ref:连接匹配条件,或为null,或为const

rows:估算得出结果,mysql需要读取的行数

Extra:查询的一些信息

CSDN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值