如何使用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覆盖索引,不用回表,性能最优

相关推荐
一个风轻云淡8 小时前
Markdown学习与实践
后端
程序员cxuan8 小时前
真没想到,AI 圈又杀出来一匹黑马!
人工智能·后端·程序员
nvvas8 小时前
Java 入门(四):数组——数据的集合管理
java·开发语言
掘金者阿豪8 小时前
极空间 NAS 部署 Typecho:从 Docker 安装、主题配置到固定公网访问
后端
科技苑8 小时前
前后端分离与微服务架构如何协同?
前端·后端·前端框架
Lambert2818 小时前
AgentScope Java 从零(07):官方有权限引擎,我却在工具里写了个 if
java·后端·ai编程
Ticnix9 小时前
多租户 RAG:让每个用户只检索到自己的知识库
后端·python·agent
Kyrie_kk9 小时前
Java--ThreadLocal线程副本(一)
java·后端
用户9479135811629 小时前
ReAct 不是框架,是一个 while 循环:把 Agent 的推理模式拆到能自己写出来
后端
属于自己的天空9 小时前
不用再手动查表结构了:配好 MCP,Claude Code 自己读数据库生成代码
数据库·后端