mysql explain中rows是怎么计算的?
一、mysql explain中rows是怎么计算的
row值的含义是mysql解释器【认为】应该查询的行数,有人研究过源码发现这个玩意和实际查询时的表现并没有太多关系。
简单来讲就是,这个rows值只是mysql根据缓存数据的一个估算,反应的是在只有一堆数据并且没有索引时应该扫描的行数。
加过索引后rows值的计算方法和不加索引时相同,依然会出现几万行的情况。但实际查询时mysql会优先读取索引,根据B+树的分支和LIMIT值进行判断。
也就是说实际执行时可能只读取了LIMIT条数据,但是EXPLAIN这个解释预判中的rows数值却很大,因为这是未优化时的预判结果,这个算法并没有随着索引和查询条件而更新。
所以根本不用考虑rows行数过大的问题,只要索引正确且后面没有用到filesort,查询时间也不长,那你的数据库设计就没有问题。
网上好多文章里写的rows值越小越好其实是误区,有时候索引无论怎么建都会让rows显示很大,这个表述是错误的。
你用InnoDB引擎查询试试,有的时候rows值比你数据表中总行数还要大,明显是一个缓存估算结果。
延伸阅读:
二、什么是执行计划
有了慢查询语句后,就要对语句进行分析。一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划。

相关推荐HOT
更多>>
如何使用Pandas处理Excel?
如何使用Pandas处理Excel?做过行政或者人事,或者对此有过了解的小伙伴,一定对下发各个部分的表有着非常深刻的印象,最常见的就是需要我们将一...详情>>
2023-11-14 07:43:15
python中np.insert()函数的使用方法
python中np.insert()函数的使用方法在numpy数组操作中,np.append()方法可以在每行每列的最后添加数据,但其位置是规定的,那如果想要指定添加...详情>>
2023-11-14 05:06:13
SVM在python中的原理如何理解?
SVM在python中的原理如何理解?在python中除了编程化的知识点外,对于数学方法的算法也有所涉及,SVM就是一种很好地体现。我们学习过数学中的坐...详情>>
2023-11-14 04:30:04
python处理绝对路径和相对路径函数有哪些?
python处理绝对路径和相对路径函数有哪些?绝对路径和相对路径是什么?绝对路径:从根文件夹开始,Windows系统以盘符(C:)作为根文件夹,OSX或Lin...详情>>
2023-11-14 03:33:02热门推荐
如何使用python any()判断多元素?
沸如何使用Pandas处理Excel?
热python函数中的参数有哪些?
热python中pygal模块如何使用?
新Python的excel处理操作
python中doctest库是什么?
python中series是什么意思
python中np.insert()函数的使用方法
SVM在python中的原理如何理解?
Python描述符中有哪三种方法?
python处理绝对路径和相对路径函数有哪些?
python单继承和多继承如何定义?
python封装中的私有如何理解?
python模块引入的三种方式
技术干货






