Explain分析语句,详细说明,包含详细测试例子

语法:explain select …

在这里插入图片描述

ID:SELECT识别符,id值越高,执行级别越高,如果ID相同,执行顺序由上到下

SELECT_TYPE:select 语句的类型
常用值:
SIMPLE:简单查询 不涉及 join 查询以及 子查询
PRIMARY:主查询或者是外层的查询
SUBQUERY:子查询
UNION 与 UNION RESULT:联合查询

TYPE(重点指标):访问类型,表示 MYSQL在表中找到所需行的方式 ,优化最好能达到range级别 甚至是REF级别
常用值:
ALL: 全表扫描
INDEX: 遍历整个索引树,如果有出现回表问题 就不出现这个类型
在这里插入图片描述
在这里插入图片描述
RANGE: 使用索引 检索 给定范围的行,一般where 中出现 between in > <
在这里插入图片描述
REF:非唯一性索引扫描,索引访问但可能返回多个符合条件的行
EQ_REF:多表连接中 使用了 primary_key 或 unique key作为关联条件
在这里插入图片描述

CONST:通过索引一次就能找到,通常是primary_key 或 unique索引列查找
SYSTEM:表中只有一条数据的查询 NULL:

POSSIBLE_KEYS:可能使用到的索引

KEY:使用的索引(重点指标)

KEY_LEN:索引的长度(不是重点指标)
计算方法:
类型字节(int +4 ; varchar(10) 10个字符 utf8 30个字节 gbk 20个字节 ) + 可变长(+2)+允许为空(+1)
在这里插入图片描述在这里插入图片描述
68 =( age int 4个 + username varchar 20*3个) + (2个 username varchar 可变长)+(1个 age允许为空 + 1个 username允许为空)

REF:哪一列被使用了,const表示该列等于某个常数
在这里插入图片描述

ROWS:查询SQL语句扫描的数据量 不是很准确 属于 约等于,当使用索引时候 rows的值不应该超过全表数据的 1/3 (重点指标)

EXTRA:额外的信息(重点指标)
using filesort:无法利用索引进行排序,只能在外部内存中或磁盘中进行排序工作叫做 文件排序,效率不怎么好。 索引在 where 中产生 order by 不会产生索引,只能利用索引进行排序,从结果2可以看出
要想不出现这个需要满足三点:
(1)使用了索引,explain 参数key能知道
(2)order by 字段 这个字段必须是 在这个索引key 里面
(3)如果是使用组合索引,需要符合最左匹配原则 例如 index(username,sex,age) 查询 where username=’‘aa’ order by age 不符合原则 还是会出现 using filesort 这个额外信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
Using temporary:表中常常涉及group by union 合并 distinct 去重 还有多表查询 order by排序 ,如果不能有 效利用索引来完成查询,MySQL很有可能寻求通过建立内部的临时表来执行查询
在这里插入图片描述
Using where:不能使用索引进行过滤,只能类似于 using filesort只能在外部完成过滤操作
Using index condition:需要进行回表,但是使用了索引,并且需要利用索引进行数据查询以及一些数据排序工作 (下面例子就知在 使用 username 索引情况 利用 status进一步的查询)
在这里插入图片描述

USING index:效率不错,避免回表操作,直接在索引树能完成数据的获取工作,如果还出现了 user where 代表 利用索引进行进一步的过滤
在这里插入图片描述
性能 从下往上 依次增加

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值