全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

mysql explain中rows是怎么计算的?

发布时间:2023-10-13 05:03:36
发布人:xqq

一、mysql explain中rows是怎么计算的

row值的含义是mysql解释器【认为】应该查询的行数,有人研究过源码发现这个玩意和实际查询时的表现并没有太多关系。

简单来讲就是,这个rows值只是mysql根据缓存数据的一个估算,反应的是在只有一堆数据并且没有索引时应该扫描的行数。

加过索引后rows值的计算方法和不加索引时相同,依然会出现几万行的情况。但实际查询时mysql会优先读取索引,根据B+树的分支和LIMIT值进行判断。

也就是说实际执行时可能只读取了LIMIT条数据,但是EXPLAIN这个解释预判中的rows数值却很大,因为这是未优化时的预判结果,这个算法并没有随着索引和查询条件而更新。

所以根本不用考虑rows行数过大的问题,只要索引正确且后面没有用到filesort,查询时间也不长,那你的数据库设计就没有问题。

网上好多文章里写的rows值越小越好其实是误区,有时候索引无论怎么建都会让rows显示很大,这个表述是错误的。

你用InnoDB引擎查询试试,有的时候rows值比你数据表中总行数还要大,明显是一个缓存估算结果。

延伸阅读:

二、什么是执行计划

有了慢查询语句后,就要对语句进行分析。一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划。

#it技术干货

相关文章

为什么mysql innodDB中组合索引中范围查询后的条件索引会失效?

为什么mysql innodDB中组合索引中范围查询后的条件索引会失效?

2023-10-13
Web3.0时代到来,我们的生活会发生哪些变化?

Web3.0时代到来,我们的生活会发生哪些变化?

2023-10-13
什么是架构师,如何成为架构师?

什么是架构师,如何成为架构师?

2023-10-13
开发APP需要哪些第三方费用?

开发APP需要哪些第三方费用?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取