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语句来帮助我们查看某个查询语句的具体执行计划。

猜你喜欢LIKE
相关推荐HOT
更多>>
WordPress与MySQL数据库之间是什么关系?
一、WordPress与MySQL数据库之间是什么关系说的简单点,wordpress或者类似的网站程序就类似一辆BUS,而数据库仅仅是一个记录系统。这两BUS长的...详情>>
2023-10-17 23:19:57
为什么一台电脑可以安装多个SQL Server实例?
一、为什么一台电脑可以安装多个SQL Server实例在SQL Server中,实例与编程的“类和对象”很相似。安装过程可以看作是类,安装过程中创建的实例...详情>>
2023-10-17 22:14:09
memcache缓存的是什么数据又是怎么写入的呢?
一、memcache缓存的是什么数据又是怎么写入的首先明确,memcache是作为高速缓存使用的。那么,到底怎样才能获得高速的响应呢?当然如果是简单处...详情>>
2023-10-17 21:14:39
MySQL InnoDB聚簇索引B+树的阶(m)是怎样决定的?
一、MySQL InnoDB聚簇索引B+树的阶(m)是怎样决定的1、页的大小(Page Size)B+树是以固定大小的页(Page)为单位进行存储和操作的,页是数据库...详情>>
2023-10-17 18:07:35热门推荐
什么是关联子查询,关联子查询语法有什么好处?
沸WordPress与MySQL数据库之间是什么关系?
热linux下连接oracle数据库有什么好用的工具?
热为什么一台电脑可以安装多个SQL Server实例?
新像爱奇艺、优酷等视频网站的数据库是怎么设计的?
memcache缓存的是什么数据又是怎么写入的呢?
怎样在数据库中实现一对多的关系怎样存储图片和视频?
access数据库怎么样通过宏命令实现打开数据库后自动启动窗体?
怎么向MySQL导入数据的同时在主键列自动生成uuid?
SQLite的优缺点?
SQL Sever2000的数据库怎么附加到2012的数据库上?
MySQL InnoDB聚簇索引B+树的阶(m)是怎样决定的?
postgre的bpchar字段类型相当于MySQL的什么类型?
Android适配你需要学习哪些?
技术干货






