自学内容网 自学内容网

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子句来限制返回的结果集,但是无法使用索引来加速查询。
优化方法:加索引
在这里插入图片描述


原文地址:https://blog.csdn.net/qq_34249468/article/details/140639755

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!