mysql学习笔记之explain

测试mysql的版本5.7.24,不同的mysql版本查询的方式是不一样的。同一条sql在 5.7.24中执行与5.7.25中执行用到的索引就不一样。

explain 说明,解释

explain各项参数说明

  • id 表示执行的顺序
    id的值越大,越先执行。对应简单的sql,关联查询 id的值都是相同的

  • select_type 查询类型
    SIMPLE 简单
    DERIVED 有子查询的(派生)
    PRIMARY 查询中若包含任何复杂的子查询,最外层查询则被标记为Primary,注意不是主键

  • table 查询的表名称(有别名就显示表的别名)
    对哪一步操作的结果

  • type 查询的方式,这个很重要
    const,system 只有一行匹配的时候
    eq_ref 比较好的,用户到了主键索引或者唯一索引
    ref 与eq_ref不同的是使用到了索引的左前缀
    range 使用到索引指定范围的查询
    index 扫描索引树
    all 全部扫描

  • possible_keys
    用到的合适的索引,可能用到的索引

  • key
    实际用的索引

  • key_len
    决定使用索引的长度

  • ref
    关联表使用那一字段筛选行

  • rows
    执行查询可能扫描的行数,这是一个预估值

  • filtered
    返回结果的行,占读到的行(rows)的百分比

  • extra
    另外的,这个参数也很重要
    ···
    Using index condition; Using where; Using MRR; Using temporary; Using filesort
    ···

不同的MySQL版本、不同的存储引擎甚至不同的数据量表现都可能不一样。参考: http://www.cnblogs.com/zhanjindong/p/3439042.html

原文地址:https://www.cnblogs.com/zqsb/p/10625961.html