id

含义

查询序号

规则

  1. id越大越先执行
  2. id相同时,从上自下执行
  3. id为null,表示查询结果集

    table

    含义

    具体查询的表名

    select_type

    含义

    查询类型

    具体类型

  4. simple:简单(普通)查询

  5. primary:主查询,一般有依赖子查询、union、union all时出现
  6. subquery:子查询,出现在select和where中,且不关联主查询任何字段的查询
  7. dependent subquery:依赖子查询,子查询中依赖主查询的字段(exists语句中会出现)
  8. materialized:物化,一般出现在in中的子查询
  9. union:union和union all都会出现
  10. union resultunion会出现,且extra字段会using temporary
  11. derived:衍生表,from中的子查询

    possible_keys

    含义

    可能用得上的索引

    key

    含义

    实际用上的索引

    key_len

    含义

    用上索引字段的具体长度

    ref

    含义

    where的入参

    rows

    含义

    必须要遍历的数据条数(越少越好)

    filtered

    含义

    最终结果占rows条数的百分比

    extra

    含义

    额外信息,但是也特别重要

    具体内容

  12. using where:(where遍历过滤)使用了where进行过滤,也就是有遍历操作了

  13. using index:(覆盖索引)where中的字段全是某个索引字段,且select的字段也是索引字段
  14. using index condition:(索引下推)若where查询字段全在索引中,select中可能不全是索引字段
  15. using filesort:需要额外排序。这里只要能和where用到的列续上就不会出现filesort
  16. using join buffer (Block Nested Loop):在没有索引的情况下join,会使用此join方式
  17. using temporarygroup byunion会出现

    type

  18. system:据说表中只有一行记录时候的查询

  19. const:使用主键等值查询
  20. eq_ref:使用唯一索引联表查询
  21. ref:使用普通索引进行等值查询或联表查询
  22. fulltext:全文索引
  23. ref_or_null:某个字段用到索引但是具体写法:a=1 or a is null
  24. index_merge:出现or,并且两边字段都有索引。会合并索引
  25. range:索引字段使用><inbetween等查询
  26. index:没有使用上索引进行过滤,但是排序可能用到了索引中字段(用了索引但是不是过滤的)
  27. ALL:全表扫描