美文网首页
Mysql-执行计划Explain

Mysql-执行计划Explain

作者: lazyguy | 来源:发表于2019-07-10 15:14 被阅读0次
    列名 意义
    id
    select_type SELECT语句查询的类型
    table 查询列的出处
    partitions 如果是分区表,表示从哪个分区查,非分区表为null
    type 表和前一张表的关联方式。也可以说是当前这张表会怎么去查询
    possible_keys 查询的时候可能被使用的索引
    key mysql真正决定用来查询的索引,(可以不是上面possible_keys中的值)
    key_len 存储的索引的长度
    ref 从哪儿取值
    rows 需要查询的行数
    filtered
    Extra

    type描述的是在每个表的查询中如何连接的,既join。一个sql查询可能涉及到多个表的相互连接。从最好的到最差的。

    • system
      这个表只有一行(既系统表),这是const类型的一种特殊形式
    • const
      这个表最多只有一行符合条件的匹配的行,而且是第一个被查询的table,因为只有一行数据,这行里面的各个列的值可以被当做constants常量,被后面的优化器使用。
      当我们用一个确定的值去和主键或者唯一索引去比价时,mysql就是const。(因为他可以直接在b+tree里快速找到此值,只需要一次从顶到底的查找)。注意必须是索引的全部,而不是部分。所以当我们的查询是主键/唯一索引等号比较时,是最快的。只需要一次查找即可。
    • eq_ref
      跟const其实是一样的,不过他不是第一个被查询的,而是被其他表连接的时候。假设学生表和地址表一对一,下面这个sql输出中,注意第二行查找address表时的type就是eq_ref。也就是说每次student表查找到一条后,再去查address表的时候,只需要查找一次。因为查找address表用的是前一张student表的user中的address的主键。
      EXPLAIN SELECT * FROM student LEFT JOIN address ON student.addr_id = address.id;

    `

    • ref
      代表当期表数据查找并非基于主键或者唯一非空索引(既不能准确的找到唯一的一个值)

    • fulltext
      长文本索引相关

    • ref_or_null
      类似ref,但是查询需要再来一遍去查询对应列内容为null的数据行。如下:

      SELECT * FROM ref_table
        WHERE key_column=expr OR key_column IS NULL;
      
    • unique_subquery
      eq_ref 用于in条件子句

    • index_subquery
      任然是用于in条件子句,只不过相对于unique_subquery这种查询代表着非unique的in条件

    • range
      range代表着无法确定个数的范围查询,走索引查询。在以下条件中都可能用到。
      =,<>,>,>=,<,<=,IS NULL,<=>,BETWEEN,LIKE,IN()

    • index
      扫描表用的是索引时,显示此字段。具体又分2种情况。
      1.覆盖索引。需要的列在索引中有,此时Extra列会显示using index,不需要进行全表扫描。
      2.使用了索引,但是还是需要走到叶子节点,读取具体的表数据。这种情况Extra列不会显示using index
      MySQL can use this join type when the query uses only columns that are part of a single index.

    • all
      全表扫描。既扫描条件没有现成的索引,查询只能通过扫描表得到数据。是最差的情况。

    Extra

    这个列会文本化提供一些关键信息,用于优化考虑。
    比如出现 Using filesortUsing temporary应该重点小心。
    Range checked for each record (index map: N)

    相关文章

      网友评论

          本文标题:Mysql-执行计划Explain

          本文链接:https://www.haomeiwen.com/subject/fckaoqtx.html