Mysql explain学习记录

本文详细介绍了阿里Java规范中关于SQL性能优化的目标,重点解析了SQL执行计划中`type`和`Extra`字段的含义。文章强调了性能从`consts`到`range`的重要性,并指出全索引扫描(`index`)和全表扫描(`ALL`)应尽量避免。通过理解这些指标,开发者可以更好地优化SQL查询,提高系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 阿里java规范中:
【推荐】SQL 性能优化的目标:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts
最好。
说明:
1)consts 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
2)ref 指的是使用普通的索引(normal index)。
3)range 对索引进行范围检索。
反例:explain 表的结果,type=index,索引物理文件全扫描,速度非常慢,这个 index 级
别比较 range 还低,与全表扫描是小巫见大巫。

工作中需要优化sql的查询性能,
于是系统学习下sql的性能优化分析
学习自

https://www.cnblogs.com/joimages/p/14549899.html

列名描述备注
id多条sql的select执行顺序从大到小执行
select_typeSELECT 关键字对应的查询类型连接查询和子查询时才有
partitions匹配的分区信息
type针对单表的访问方式重点关注的
possible_Keys可能用到的索引
key实际用到的索引
key_len实际用到的索引长度
ref当使用索引列等值查询时,与索引列等值匹配的对象信息
rows预估的需要读取的记录条数
filtered针对预估的需要读取的记录,经过搜索条件过滤后剩余记录条数的百分比
Extra一些额外的信息重点关注的

我们重点关注的指标就是type和Extra,

首先介绍下type,性能从上向下越来越差

类型描述备注
system如果表里面只有一条数据,而且表使用的存储引擎(如 MyISAM)的统计信息是准确的。条件太苛刻,几乎见不到
const使用主键或唯一二级索引与常数进行等值匹配时效率高,最好能优化到这个级别,很难
eq_ref对于每个索引键的查询,返回匹配唯一行数据(有且只有1个,不能多,不能0)较难
ref通过普通的二级索引与常数进行等值匹配时常见,按照创建的组合索引查询基本就是这个
range使用索引进行范围查询(between,in,<>=)常见,阿里要求的最低等级
index使用索引覆盖,扫描全部索引记录的时候常见,但是不推荐
ALL全表扫描 常见,但是不推荐

Extra

主要尽量达到最优的Using index, 他表示使用覆盖索引,不用回表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值