如何使用MYSQL的EXPLAIN语句进行查询分析?

面试

1.在sq|语句前面加上explain,然后执行

2.分析输出,关注type,key,rows,extra这几个参数

type常见的值有:ref >range > index>all。

refrange,index都表示用上了索引。

ref表示使用上了非唯一索引,range常见于范围查询,表示扫描索引的一个范围;index表示扫描索引中的所有行;

all表示全表扫描,性能最差。

key表示用到的索引的名称;

rows表示要读取的行数,越小越好

extra会展示一些其它信息,例如using index(表示应用了覆盖索引),using filesort(使用了文件排序)

优化例子:建立联合索引,使索引里面包含要排序的所有字段,从文件排序优化到了索引排序。

id select_type table type key key_len ref rows Extra
1 SIMPLE user ref idx_age 5 const 1 Using index

id=1:单条简单查询,只有一层

select_type=SIMPLE:无关联子查询、无 UNION

table=user:操作表是 user

type=ref:使用普通索引等值匹配,性能良好

key=idx_age:本次查询真正使用了 age 索引

key_len=5:int 类型索引占用 5 字节

ref=const:匹配条件是常量 18

rows=1:预估只扫描 1 行数据

Extra=Using index:覆盖索引,不用回表,性能最优

相关推荐
云和数据.ChenGuang6 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠6 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
Cosolar8 小时前
不收费、不加水印、数据归你:我做了个开源的在线简历工具
后端·面试·前端框架
silvamux_9 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
步行cgn10 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠10 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
小蒜学长10 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
Deng桑10 小时前
SpringAI写第一个Agent-把工单循环跑起来
java·agent·工具调用·spring ai
陈随易10 小时前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
每天一道题10 小时前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务