Explain Extra常见输出解析

在这里插入图片描述
MySQL执行计划中的Extra列提供了关于查询计划中额外信息的详细说明。
绿色是好 红色是差
● Using index: 表示MySQL正在使用覆盖索引(covering index)来满足查询,这意味着MySQL可以仅通过索引而不必扫描表来获取所需的数据。

#索引覆盖
select id,name from t where name = 'Jane'; 

#回表提取
select name,birthday from t where name ='Jane'; 

在这里插入图片描述
Using index condition: 表示MySQL正在使用索引来执行WHERE子句中的条件过滤。(索引下推ICP)

create index idx_a_b on t(a,b)
# 示意索引结构
a b
1 a
1 b
1 c
2 a
2 b
2 c
select * from t where a=1 and b like '%a%'

在这里插入图片描述
MRR:Multi-Range Read,多块顺序读优化

select * from t where name in ( 'Jane' , 'Michael Jackson'); 

在这里插入图片描述
图1 低效随机读
在这里插入图片描述
图 2 MRR 转为顺序读
Using join buffer: 表示MySQL正在使用连接缓冲区来处理查询。连接缓冲区是一种内存结构,用于存储连接操作的中间结果,以便优化查询性能。
在这里插入图片描述
Distinct: 表示MySQL正在执行DISTINCT操作以过滤结果集中的重复记录,建议入库前做唯一校验,而不是查询时Distinct

select distinct a from t

● Using temporary: 表示MySQL需要创建一个临时表来处理查询。通常是由于涉及到排序(ORDER BY)和分组(GROUP BY)操作而导致的。
优化方法1:按排序字段顺序建索引
优化方法2:加内存,确保临时表能够装载到内存

# 在a字段建索引
select a from t group by a 

● Using where: 表示MySQL正在使用WHERE子句来限制返回的结果集,但是无法使用索引来加速查询。
优化方法:加索引
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的老史

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值