8.Explain关键字

查询优化的百科全书 —— Explain 详解

1.Explain简介

⼀条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后⽣成⼀个所谓的执⾏计划,这个执⾏计划展示了接下来具体执⾏查询的⽅式,⽐如多 表连接的顺序是什么,对于每个表采⽤什么访问⽅法来具体执⾏查询等等。设计MySQL的⼤叔贴⼼的为我们提供了EXPLAIN语句来帮助我们,它的作用就是查看某个查询语句的具体执行计划

2.Explain各个字段分析

id: 在一个大查询里面,每个select关键字都对应一个id
select_type: select关键字对应的查询类型
  - simple: 简单查询。查询语句中不包含UNION或者⼦查询的查询都算作是SIMPLE类型
  - primary: 主查询。包含UNION、UNION ALL或者子查询的大查询来说,它是由几个小查询组成的,其中最左边的那个查询的select_type值就是PRIMARY
  - subquery: 子查询。
  - derived: 表子查询
  - union: 联合查询。
  - union result: 查询的联合查询临时表(因为联合查询默认去重,而去重工作是通过临时表来完成)
tables: 查询的表名
partitions: 查询的分区
type: 针对单表的访问方法
 - const: 
 - ref: 
 - ref_or_null: 
 - range:
 - index:
 - all:
possible_keys: 理论上⽤到的索引
key: 实际上使⽤的索引
key_len: 实际使⽤到的索引⻓度
ref: 当使⽤索引列等值查询时,与索引列进⾏等值匹配的对象信息
 - 某个字段: 
 - const: 常量
 - null: 没有使用索引列等值查询
rows: 获取结果 预估的需要读取的记录条数
filtered: 某个表经过搜索条件过滤后剩余记录条数的百分⽐
Extra: ⼀些额外的信息
 - using filesort: 在order by时无法利用索引完成排序,转而采用文件排序的方式
 - using temporary: 索引列在group by时没有按照索引定义时的个数和顺序
 - using index: 查询时用到了索引
 - using where: 查询中用到了where
 - using join buffer: 查询时用到了join。被驱动表(从表)

sing join buffer: 查询时用到了join。被驱动表(从表)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值