mysql慢查询语句分析总结( 二 )

  • UNION(UNION中的第二个或后面的SELECT语句)
  • DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询)
  • UNION RESULT(UNION的结果,union语句中第二个select开始后面所有select)
  • SUBQUERY(子查询中的第一个SELECT,结果不依赖于外部查询)
  • DEPENDENT SUBQUERY(子查询中的第一个SELECT,依赖于外部查询)
  • DERIVED(派生表的SELECT, FROM子句的子查询)
  • UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存,必须重新评估外链接的第一行)
  • table数据来源于那张表,关联等复杂查询时会用临时虚拟表
    type检索数据的方式
    • system:表只有一行记录
    • const:通过索引查找并且一次性找到
    • eq_ref:唯一性索引扫描
    • ref:非唯一行索引扫描
    • range:按范围查找
    • index:遍历索引树
    • all:全表扫描
    possible_keys显示可能使用的索引
    Key实际使用的索引
    key_len索引的长度,一般来说,长度越短越好
    ref列与索引的比较,表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
    rows估算查找的结果记录条数
    ExtraSQL查询的详细信息
    • Using where:表示使用where条件过滤
    • Using temporary:使用了临时表暂存结果
    • Using filesort:说明mysql对数据使用一个外部索引排序 。未按照表内的索引顺序进行读取 。
    • Using index:表示select语句中使用了覆盖索引,直接从索引中取值
    • Using join buffer:使用了连接缓存
    • Using index condition:表示查询的列有非索引的列
    [参考]
    MySQL Explain详解




    推荐阅读