mysql中explain执行结果中的rows是什么意思?
2018-03-14 10:01
639 查看
1.在为表创建索引的过程中,发现当在一个现有的索引最右添加一列后,按照筛选条件看,能缩小查询的范围。然后从explain执行后结果发现,其实扫描的rows有时候反而比加上新的一列后会增多。
而某些情况下,rows的大小并不是和最后的查询时间成反比。2.比如我的表结构如下:
所以,rows究竟是怎么计算出来的呢?2016年03月03日提问
评论
邀请回答
编辑
默认排序时间排序
http://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_rowsThe 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条件。
而某些情况下,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在官网的文档中有解释:http://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_rowsThe 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条件。
相关文章推荐
- SQLSERVER语句的执行时间显示的统计结果是什么意思
- SQLSERVER语句的执行时间显示的统计结果是什么意思
- mysql 存储过程,执行结果"Error Code: 1329. No data - zero rows fetched, selected, or processed"
- MySQL通过Explain查看select语句的执行计划结果触发写操作
- 这段代码在32位计算机上的执行结果是什么?
- mysql 执行计划explain的列详解和说明
- mysql explain执行计划详解
- ping结果中TTL是什么意思
- Precision和Length对MySQL执行结果的影响
- MySQL bigint(20)是什么意思?
- sql执行效率检测 mysql explain
- saltstack 执行结果返回到mysql
- free结果输出中的-/+ buffers/cache是什么意思
- Oracle 常见的执行计划步骤(explain结果的Description数据参考)
- mysql explain结果介绍
- MYSQL EXPLAIN执行计划命令详解(支持更新中)
- mysql中int(10)代表什么意思?
- MySQL explain执行计划解读
- mysql查询结果手动能执行成功,crontab自动执行不成功,发邮件没有查询结果
- static执行结果是什么?