1.在为表创建索引的过程中,发现当在一个现有的索引最右添加一列后,按照筛选条件看,能缩小查询的范围。然后从explain执行后结果发现,其实扫描的rows有时候反而比加上新的一列后会增多。
而某些情况下,rows的大小并不是和最后的查询时间成反比。

2.比如我的表结构如下:

CREATE TABLE `test` (`flag` tinyint(4) NOT NULL DEFAULT '0',`type` smallint(6) NOT NULL DEFAULT '0',`poid` int(11) NOT NULL DEFAULT '0',`new_nums` int(11) NOT NULL DEFAULT '0',`addup_nums` int(11) NOT NULL DEFAULT '0',`r_time` int(11) NOT NULL DEFAULT '0',`event_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`dtype` tinyint(6) NOT NULL DEFAULT '1' COMMENT '1.day 2.week 3.month',`dtime` char(10) NOT NULL DEFAULT '',KEY `one` (`dtime`,`r_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

当我试图在索引one的最后添加一列poid后,我发现,explain执行后的rows反而增多了。

3.

所以,rows究竟是怎么计算出来的呢?

  • 2016年03月03日提问
  • 评论
  • 邀请回答
  • 编辑
默认排序时间排序

1个回答

答案对人有帮助,有参考价值1答案没帮助,是错误的答案,答非所问

这个rows在官网的文档中有解释:
MySQL :: MySQL 5.7 Reference Manual :: 8.8.2 EXPLAIN Output Format

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

这个rows就是mysql认为必须要逐行去检查和判断的记录的条数。 
举个例子来说,假如有一个语句 select * from t where column_a = 1 and column_b = 2;
全表假设有100条记录,column_a字段有索引(非联合索引),column_b没有索引。
column_a = 1 的记录有20条, column_a = 1 and column_b = 2 的记录有5条。

那么最终查询结果应该显示5条记录。 explain结果中的rows应该是20. 因为这20条记录mysql引擎必须逐行检查是否满足where条件。

mysql中explain执行结果中的rows是什么意思?相关推荐

  1. MySQL中explain执行计划中额外信息字段(Extra)详解

    SQL执行计划是经过优化器决策,产生的SQL在数据库内部执行的访问路径计划: 由如下语法得到: explain select col1,col2 from t1..; desc select col1 ...

  2. mysql中explain执行结果各个字段的意思

    1.Explain执行计划--SQL优化神器 用法: EXPLAIN SELECT * FROM pms_category WHERE parent_cid=0 运行结果: 通过在SQL语句前面加上e ...

  3. mysql sql先后执行_MySQL中SQL语句执行顺序

    (7) SELECT (8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) ...

  4. MySQL 优化 —— EXPLAIN 执行计划详解

    引言 本博客大部分内容翻译自MySQL 官网 Understanding the Query Execution Plan 专题.另外有一些补充,则来自于网课以及<高性能MySQL(第三版)&g ...

  5. mysql using filesort_Mysql执行计划中的Using filesort

    Using filsort文档中的解释: Mysql需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配where子句的行保存排序关键字和行的指针来完成排序,然后关键 ...

  6. mysql using temporary_执行计划中Using filesort,Using temporary相关语句的优化解决_MySQL

    bitsCN.com 昨天听开发人员提到,相关的彩票网页当中一个页面刷新的很慢,特别是在提取数据的时候, 今天早上一到,便去找开发人员要去相关的也没进行浏览,窥探哪些数据出现了问题,开发人员 使用PH ...

  7. 执行计划oracle中cost,执行计划中cost计算方法

    概念: blevel:二元高度=索引高度-1 clustering_factor:集群因子,扫描index scan得出的要扫描的表中block数,clustering_factor<=tabl ...

  8. composer php中如何执行,php中composer如何实现类的自动加载(示例讲解)

    本篇文章给大家带来的内容是关于php中composer如何实现类的自动加载(示例讲解),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们在开发项目中会经常用到第三方的类库插件,但是 ...

  9. MySQL中Explain用法详解

    Explain简介 我们在写后端程序的时候,通常会写sql来查询数据,如果是单表查询的时候,那直接select就完事了,但是如果是连表查询数据量也不小的话,就造成了查询速度会比较慢,那么我们该怎么知道 ...

  10. Mysql explain 执行计划之type详解

    EXPLAIN执行计划中type字段分为以下几种: ALL         INDEX         RANGE         REF         EQ_REF         CONST,S ...

最新文章

  1. 三年 Git 使用心得 常见问题整理
  2. 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 6.)(python/c/c++版)(笔记)
  3. 一个简单易用的代码生成工具
  4. WinForm:进度条的实现(异步)
  5. Windows下Redmine插件安装
  6. wrodpress登录mysql_登陆wordpress后台MySQL错误
  7. 特斯拉电动皮卡不太香:预订表现不及3年前的Model 3
  8. bottomnavigationview放大两边没有_有没有什么HAPPYEND的动漫?
  9. pytorchgpu测试_pytorch学习(十)—训练并测试CNN网络
  10. 计算机输入输出接口是交接界面,计算机组成原理试题1
  11. win7如何显示文件扩展名?
  12. rpm -ivh安装mysql_RPM 命令详细介绍
  13. 携程网络防火墙自动化运维之道
  14. m-TRP transmission for URLLC(draft)
  15. Linux启动时间优化-内核和用户空间启动优化实践
  16. 打破行业困境,大麦如何引领NB-IoT技术的创新应用
  17. 你是不是傻,怎么不选最好的?
  18. 桌面图标文件夹图标隐藏恢复
  19. POI实现Word文件转PDF
  20. 基于java的网上水果销售管理系统

热门文章

  1. linux cat 压缩文件,Linux cat和zcat命令可能比你意识到的更有用
  2. Debian(Linux) 安装Windows通用字体(可解决TimesNewRoman等字体的报错)
  3. 39个让你受益的HTML5教程
  4. Compilation failed to complete
  5. CSS中的传统布局、多列布局、弹性伸缩布局及Emmet工具
  6. 社会心理学(第8版)
  7. smartbi服务器缓存文件,Smartbi Config页面介绍 - Smartbi V9 帮助文档
  8. @property详细解读
  9. js实现简单的点名器随机色
  10. python opencv生成背景透明图标