explain执行计划详解

explain执行计划分析,是SQL优化的重要手段。

id

id表示查询中执行 select 子句或操作表的顺序。id的执行顺序规则:

  • id越大,越先执行。
  • id相同,则按从上到下顺序执行。

id相同

EXPLAIN SELECT * FROM employee e ,department d ,customer c 
WHERE e.cus_id = c.id AND e.dep_id = d.id ;

在这里插入图片描述

id不同

EXPLAIN SELECT * FROM department 
WHERE id = ( SELECT id FROM employee WHERE id =( SELECT id FROM customer WHERE id = 1 ));

在这里插入图片描述

EXPLAIN SELECT * FROM department d, (SELECT dep_id FROM employee GROUP BY dep_id) t 
WHERE d.id = t.dep_id;

在这里插入图片描述

select_type
  • simple:简单查询,不含子查询、UNION
  • primary:复杂查询的最外层查询
  • subquery:子查询
  • derived:当from后包含子查询时,标记为derived–临时表
  • union:union之后的标记位union,前面的是primary
type 访问类型
  • system:系统只有一条记录,不会出现。memory引擎
  • NULL: 不走表。例如select now();
  • const:通过主键或者唯一索引,定位到一条数据
  • eq_ref:使用主键或者唯一性索引扫描,只能匹配一行。多用于多表join操作。
EXPLAIN SELECT * FROM employee e , department d WHERE e.id = d.id;

在这里插入图片描述

  • ref:非唯一性索引的单值扫描。
  • range:索引的范围查找(>,>=,in等)
  • index:扫描索引树(基于索引的全表扫描,先扫索引,再扫表)
  • all:全表扫描

type 最好能达到index之上。

下图中,age是普通索引,age=18时,表中有多条数据,访问类型为all,没有走索引;当age=22,表中只有一条数据时,访问是ref。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L83frO1H-1666531940363)(image/image-20221021001130727.png)]

possible_keys

表示查询时可能使用到的索引,并不是真正用到。

key

表示查询时真正使用到的索引,显示索引字段名称。

rows

查询优化器根据统计信息估算查询到结果需要扫描多少行数据。rows越少效率越高。

key_len

查询使用了索引的字节数据量。可以判断是否全部使用了组合索引,或者只用到索引最左部分字段。

Extra属性

查询的额外信息:using where/index/filesort/tempropary 等很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值