东东
发布于 2022-11-08 / 50 阅读 / 0 评论 / 0 点赞

MySQL-explain

使用explain可以查看sql的执行过程
explain中包含的信息

  • id
  • type
  • select_type
  • rows

字段详解

id

查询时的序列号,一组数字
查询过程分为三种情况

  1. ID相同
  2. ID不同
  3. 存在相同ID和不同ID

相同

执行顺序自上而下

不同

id越大,优先级越高

同时存在

相同的ID可以看做为一组,ID越大的组,优先级越高

select_type

查询类型,用来区分是普通查询、联合查询、子查询等

  1. SIMPLE:简单查询
  2. PRIMARY:包含子查询时,最外层的都会标记为PRIMARY
  3. SUBQUERY:select或者where中包含的子查询
  4. DERIVED:from中包含的子查询

type

访问类型
system > const > eq_ref >
ref > fulltext > ref_or_null >
index_merge > unique_subquery > index_subquery >
range > index > ALL

一般来说,sql至少也达到range级别

system

表只有一行数据,这是const的特例,平时不会出现

const

单条件
通过索引一次就找到了,一般用于主键或者唯一索引

eq_ref

多条件
唯一性索引扫描,针对每个索引键,表中只有一条数据,常见于主键或唯一索引

ref

非唯一性索引扫描

rang

使用一个索引来进行范围扫描

index

all

遍历全表

possible_keys

查询涉及的字段存在索引,会列出,但不一定会使用

key

实际使用的索引,没有使用索引则用null

rows

大致估算查找数据所扫描的行数