explain 各字段详解

id

表示select 查询的序列号

当 id 相同时,执行顺序自上而下。(表连接)

当 id 不同时,id 越大,优先级越大,越先执行。(子查询)

select_type

表示查询的类型,常见的值有:

  • SIMPLE: 简单查询,不包含union或者子查询
  • PRIMARY: 如果查询中包含子查询或者其他部分,外层的select将被标记为primary
  • SUBQUERY: 子查询中出现的第一个select
  • UNION: 在union语句中,union之后出现的select
  • DERIVED: 在from中出现的子查询将被标记为 derived
  • UNION REDULT: union查询的结果

table

当前查询的表

partitions

查询涉及到的分区,对于未分区的表,值为null

type

查询执行的类型,描述了查询是如何执行的,

system > const > eq_ref > ref > range > index > ALL

system: 表中只有一行数据,是const的一种特例

const: 表中最多只有一行匹配的记录,一次查询就能找到,查用于使用主键或唯一索引做查询条件,比如

explain select * from team where id = 1;

eq_ref: 当连表查询时,前一张表的行在当前表中只有一行匹配。是除了system和const之外最好的join方法,常用于主键或唯一索引做连接条件

ref: 使用普通索引做·查询条件,查询条件可能找到多个符合条件的行

range: 对索引列进行范围查询,

index: 查询遍历了整个索引树,与ALL类似,只不过扫描的是索引,而索引一般在内存中,速度更快

ALL: 遍历全表,读磁盘,速度最慢

possible_keys

查询中可能使用到的索引

key

查询中实际使用的索引,如果为null,则表示未建立索引或索引失效

ref

表示查询索引时,哪些列或者常量被用来与索引的值进行比较

rows

mysql估算出的查询需要遍历的行数,越少越好

filtered

实际筛选出的列数 = rows * filtered

Extra

额外信息,特别注意,当 Extra 列包含 Using filesortUsing temporary,MySQL 的性能会存在问题,需要尽可能避免。

常见信息如下:

Using filesort: 使用了外部排序,没有使用索引排序

Using temporary: MySQL需要创建临时表来存储查询的结果,常见于 order by 和 group by

Using index: 查询时使用了覆盖索引,不用回表,查询效率非常高

Using where: 使用了where子句进行条件过滤,一般在没有使用到索引的时候会出现

Impossible WHERE: where子句的结果总是false且无法查到任意行

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇