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究竟是怎么计算出来的呢?