mysql系列_explain执行计划

mysql系列_explain执行计划

本篇文章主要是对8.8 Understanding the Query Execution Plan的一个解读.

一,这里只考虑单表,实际情况组合查询考虑到性能,已经很少在生产使用了.

之类核心观察两个关键column, type和extra

(1) type,选10种常用的解释一下,执行速度从上到下由快到慢.简单总结如下:

  1. system->一行
  2. const->一条,在唯一性索引和主键时使用
  3. eq_ref->大于一张表时,在const+ref时使用
  4. ref->对于联合主键情况,最左匹配(leftMost)使用.
  5. ref_or_null(增加空值)->相对于4,多一个对空值的检查
  6. unique_subquery->子查询为eq_ref的
  7. index_subquery->与6相对应,具有非唯一性索引的情况
  8. range->带范围索引,一般是与一个常量的比值,可以是: =, <>, >, >=, <, <=, <=> ,In.
  9. index->索引 相对于全表,这里走索引,索引查询会快一些,
  10. all 全表

这里特别说一下<=>操作符,类似于=,但兼容null的情况

null <=>null ==>1 VS  null=null ==>0
a <=>null  ==>0 VS    a=null ==>0

(2)extra

  • Using index :覆盖索引 从索引中就能获取必需数据,从而无需读取实际列,极大加快速度.
  • Using where 获取一个范围的值

编辑于 2018-03-04