千家信息网

MySQL explain中的rows是如何计算的

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"MySQL explain中的rows是如何计算的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MySQL explain中的ro
千家信息网最后更新 2025年12月02日MySQL explain中的rows是如何计算的

这篇文章主要讲解了"MySQL explain中的rows是如何计算的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MySQL explain中的rows是如何计算的"吧!

【背景铺垫】

相关表:

CREATE TABLE test_table (  id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,  name varchar(32) NOT NULL,  PRIMARY KEY (id)) ENGINE = InnoDB CHARSET = utf8mb4;

test_table 表记录数约12w+

问题描述

相关SQL:


EXPLAIN SELECT COUNT(*)

FROM test_table

WHERE id >= 10534

AND id <= 15375;

疑问1:上述SQL理应按id主键(聚簇索引)范围查找,为啥explain里的rows会多余两者之差呢?

在SQL结尾处增加 LIMIT 10 后,rows数值竟然没有任何影响(觉得可能会变为: 10)。

EXPLAIN SELECT COUNT(*)

FROM test_table

WHERE id >= 10000

LIMIT 10;

疑问2:LIMIT值不会影响rows的值么?

rows究竟是怎么计算的呢?

这个rows在官网文档中的解释如下:

"

rows (JSON name: rows)

The rows column indicates the number of rows MySQL believes it must examine to execute the query.


For [InnoDB] tables, this number is an estimate, and may not always be exact.

http://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_rows

简单理解即:这个rows就是mysql认为估计需要检测的行数。

为了探究rows究竟是如何算出来的,查找MYSQL源码来看看:

文件1:sql/opt_explain_traditional.cc   关键部分:push(&items, column_buffer.col_rows, nil)文件2:sql/opt_explain.cc   关键部分:select->quick->records文件3:sql/opt_range.cc   关键部分:check_quick_select

而check_quick_select的功能,在MySQL源码中的注释为:

"
Calculate estimate of number records that will be retrieved by a range scan on given index using given SEL_ARG intervals tree.

简单翻译就是:这个方法仅仅根据给出的关于这个索引的条件和索引本身,来判断需要扫描多少行。

总结

MySQL Explain 里的 rows 这个值
  • 是MySQL认为它要检查的行数(仅做参考),而不是结果集里的行数;
  • 同时 SQL里的 LIMIT 和这个也是没有直接关系的。
另外,很多优化手段,例如关联缓冲区和查询缓存,都无法影响到rows的显示。 MySQL可能不必真的读所有它估计到的行,它也不知道任何关于操作系统或硬件缓存的信息。


感谢各位的阅读,以上就是"MySQL explain中的rows是如何计算的"的内容了,经过本文的学习后,相信大家对MySQL explain中的rows是如何计算的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

关键 就是 文件 索引 部分 学习 影响 内容 源码 疑问 缓存 问题 操作系统 信息 功能 同时 思路 情况 手段 数值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 三年级作文国家网络安全宣传 戴尔dns服务器没检测到 阜阳软件开发培训 数据库如何插入测试 网络安全领导机构与制度 数据库分析为什么最难 一个服务器两个网卡怎么用 怎么获取网络安全奖学金 唐山网络技术哪家好 网络安全软件学习强国 大话三国下载软件开发 临港网络安全产业规划 驱动打印机如何截取数据库 数据库在生活应用 网安法认为从网络安全 网络安全特点有哪些方面 数据库系统实施操作心得 曙光服务器的管理口ip 观看网络安全专题教育心得体会 切削数据库的总体结构 百百家互联网科技武汉分公司 mdb数据库是做什么的 pc软件开发注册码 查询数据库表是否从0自增 成都绿线网络技术有限公司 小学学生进行网络安全教育教案 数据库整体备份还原 用友管理服务器如何启动 我的世界国内十大服务器起床战争 牡丹人民医院网络安全法
0