Mysql:explain

explain

mysql提供了一种方式,目的是为了让我们知道sql的执行顺序、索引使用情况、执行效率的情况

table

table是展示执行计划过程中,会使用到的表。
执行explain出现的每条记录都会对应一张单表(可能是存在表,可能是临时表)

id

执行explain后,处于同一个select语句的记录,都对应同一个且唯一ID。
相同ID的多行记录,执行顺序从上往下。
不同ID的多行记录,执行从下往上。

select_type

select_type能标识:每个select语句属于的查询类型。

  1. simple: 查询中不包含union或子查询的都算是simple类型
    2.primary:在union的左边的select查询,以及子查询中外层select查询,属于primary类型
  2. union: 在union中除最左边第一个select查询外,被union的select查询属于union类型
  3. subquery:在子查询中,且是不相关子查询,子查询中的select查询为subquery类型
  4. dependent subquery:在子查询中,且是相关子查询,子查询中的select查询为dependent subquery类型
  5. derived:from 或 连表时,如果表是查询出来的结果集,那么结果集的select查询为derived类型

tyoe

type表示此查询select对某个表访问的方法。
性能从好到坏依次如下:
system > const > eq_ref > ref > fulltext > ref_or_null > indexc_merge > unique_subquery > index_subquery > range > index > all

用到某个索引后,至少要达到range级别,最好是达到ref及以上。

possible_keys

possible_keys表示可能会使用到的索引

key

key表示实际用到的索引。记住:一个select语句中是可以触发多个索引的。

key_len

此字段主要针对联合索引的情况。表示实际用到索引的长度(字节数,联合索引中一般是越大越好)

rows

rows表示当前select查询预估查询的条数,越小越好

filter

filter表示经过某个搜索条件过滤后剩余记录数 占 rows的百分比值。比例越大越好

posted @ 2023-01-16 09:08  爱编程DE文兄  阅读(32)  评论(0编辑  收藏  举报