【MySQL】explain命令详解(二)

explain命令的表头

4、type

表示该查询的类型,有如下8种值:

  1. system:表示表中只有一行记录。
  2. const:通过索引查找,且一次找到记录,针对主键或唯一键的索引,如用户ID。

      例子中,主键作为where子句的条件,且为单个值,作为常量处理,即id为2的查询为const类型;由于子查询只有一行记录,因此外层查询是system类型的。

      3. eq_ref:通过索引进行查找,每个索引都只有唯一一行记录匹配,找到一条记录后就停止了检索,常见主键和唯一索引。(唯一性索引扫描)

     4.ref:通过索引进行查找,返回匹配一个值的所有行。索引值也是一个常量,但可能有多个符合条件的行,所以在找到一条记录后不能马上停止检索。(非唯一性索引扫描)

      例子中 ,col1='ac'是通过索引col1和常量'ac'来查找的,但可能有多个符合条件的值。

      5.range:查找过程中只找给定范围的行,一般是SQL条件语句中出现<、>、between、in等表示范围的关键字。

     6.index:通过遍历索引树进行查找。

      7.ALL:全表扫描,效率最低,若项目中常出现此类型的查询,需要进行优化。

 一般保证查询达到range级别以上

5、possible_keys

    查询中可能用到的索引,不一定被MySQL使用。

6、keys

    在实际查询中用到的索引,如果没有索引或者索引失效,则该值为NULL

    注意:如果查询用到了覆盖索引(一个索引包含所有需要查询的字段的值),则该索引不会出现在possible_keys中,只会出现在keys中。

原创文章 10 获赞 10 访问量 4757

猜你喜欢

转载自blog.csdn.net/Steven_L_/article/details/105845691