讲师中心 微信公众号
AI工具推荐 视频效率加速

SQL EXPLAIN怎么看_EXPLAIN字段详解

千芳君_8135

千芳君_8135

发布时间:2026-03-13 19:55:03

|

569人浏览过

|

来源于php中文网

原创

EXPLAIN核心是盯住type、key、rows、Extra四字段:type判断访问效率(ALL/index需警惕),key/key_len确认索引使用情况,rows反映扫描行数,Extra揭示隐式开销(如filesort、temporary)。

sql explain怎么看_explain字段详解

看 EXPLAIN 输出,核心是快速定位性能瓶颈,不是逐字翻译每一列。重点盯住 type、key、rows、Extra 这四个字段,它们直接反映查询是否走索引、扫描范围多大、有没有额外开销。

先看 type:访问类型决定效率上限

这个字段排在性能优劣序列里,从好到差大致是:
system → const → eq_ref → ref → range → index → ALL
重点关注是不是掉到了 index(全索引扫描)或更差的 ALL(全表扫描)。这两种意味着没用好索引,或者根本没索引可用。

  • eq_ref:通常是主键或唯一索引 JOIN,效率高,说明连接条件精准
  • ref:用了非唯一索引,比如普通字段上的索引,还算合理
  • range:走了索引范围查找(如 WHERE id BETWEEN 10 AND 20),比全扫好,但不如等值查
  • ALL:危险信号,尤其在大表上,要立刻检查 WHERE 条件是否有对应索引

再核 key 和 key_len:索引到底用没用上

key 显示实际生效的索引名;如果为 NULL,说明优化器没选任何索引——哪怕 possible_keys 里有候选项,也要怀疑索引设计或条件写法有问题。
key_len 表示用了索引的多少字节,能帮你判断是否用了联合索引的最左前缀。例如索引是 (a,b,c),key_len 只显示 a 字段长度,说明只用到了第一列;如果显示 a+b 的长度,说明用到了前两列。

  • key 为空但表有索引?检查 WHERE 条件是否符合最左前缀原则
  • key_len 比预期小?可能是隐式类型转换(如字符串字段传数字)导致索引截断
  • key_len 显示最大可能长度?说明该字段允许 NULL 或是变长类型(如 VARCHAR)

关注 rows:预估扫描行数越少越好

这个值是优化器估算的“需要读取多少行才能找到结果”,不是返回行数。它和实际性能强相关:rows 越大,I/O 和 CPU 开销越高。
注意它只是估算,受统计信息影响。如果发现 rows 偏离实际太多(比如查 1 条却报 10 万),可运行 ANALYZE TABLE 表名 更新统计信息。

  • rows 接近表总行数?大概率是全表/全索引扫描,需优化
  • JOIN 多张表时,各表 rows 相乘接近最终执行代价,要优先优化 rows 最大的那张表
  • 加了 LIMIT 不一定减少 rows 值——优化器可能仍按无 LIMIT 估算

别漏掉 Extra:隐藏问题常在这里暴露

这是诊断细节的关键字段,常见提示含义明确:

  • Using index:好消息,覆盖索引,不用回表
  • Using where:WHERE 条件在存储引擎层后做过滤(正常)
  • Using filesort:需要额外排序,没走索引排序,ORDER BY 字段没索引或不匹配
  • Using temporary:用了临时表,常见于 GROUP BY、DISTINCT、某些 JOIN 场景,尽量避免
  • Using join buffer:关联字段没索引,改用块嵌套循环,性能较差
  • Impossible WHERE:条件恒假,直接返回空,也可能是逻辑写错了

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

4683

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

971

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

1229

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

6661

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

3403

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

6640

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

9161

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

1250

2024.04.29

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

100

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn