MySQL-Explain-基础篇

模拟优化器执行SQL查询语句,分析SQL或是表结构的性能瓶颈
  • 表的读取顺序
  • 数据读取操作的操作类型
  • 索引的使用情况
  • 表之间的引用
  • 每张表有多少行被优化器查询
EXPLAIN +SQL
  MySQL-Explain-基础篇_第1张图片
各个字段含义(下图取自MySQL官方文档)
  MySQL-Explain-基础篇_第2张图片
id
    select查询的序列号,表示查询中执行select子句或操作表的顺序
    有三种情况
id相同,执行顺序由上至下,如下图,加载表的顺序是t3,t2,t1
 
id不同,如果是子查询,id序号会递增,id值越大优先级越高,越先被执行
id存在相同和不同
id越大的越先被执行,id相同的可视为一组,从上往下顺序执行;
  MySQL-Explain-基础篇_第3张图片
select_type
常见常用的
  MySQL-Explain-基础篇_第4张图片
SIMPLE-简单的select查询,查询中不含子查询或者union
  MySQL-Explain-基础篇_第5张图片
PRIMARY-查询中包含复杂子部分,最外层查询被标记为PRIMARY
SUBQUERY-在SELECT或者WHERE列表中包含了子查询
  MySQL-Explain-基础篇_第6张图片
DERIVED-在FROM列表中包含了子查询,MYSQL会递归执行这些子查询,把结果放在临时表中
  MySQL-Explain-基础篇_第7张图片
UNION-第二个SELECT出现在UNION之后, 
UNION RESULT-从UINON表获取结果的SELECT
  MySQL-Explain-基础篇_第8张图片
table
当前执行的表
possible_keys & key
possible_keys 显示可能使用这张表的索引,一个或多个
key 实际使用到的索引,如果为NULL,则没有使用索引(没有建立索引或者索引失效)
key_len
索引中使用的字节数,在不损失精度的情况下,长度越短越好
ref
显示索引的哪一列被使用,最好是个常数.
rows
大致估算出查询结果所要搜索读取的行数,越少越好

你可能感兴趣的:(MySQL,mysql,数据库,sql)