mysql使用索引与查询返回的条数有关 - 高飞网
761 人阅读

mysql使用索引与查询返回的条数有关

2017-07-28 02:09:46

mysql估计使用全表扫描要比使用索引快,则不使用索引

要理解这句话很容易,但当问题发生时,还是会感觉疑惑。

有这么一个场景,我要把网站访问ip信息,写入数据表中,然后每10分钟,统计该表中当前小时的数据。于是在该表中,我建了一个索引,即时间戳字段visit_time


但奇怪的是,每次统计,时间都非常长, 在线上explain一下,发现并没有使用索引。

下面是测试数据:

可见有9条记录,如果使用条件visit_time>'2017-03-03 12:33:27'这样有4条记录,几乎占到整个数据的一半,因此没有用到索引。

但是,如果查询visit_time>'2017-03-03 12:51:27',有2条记录,这时就用到索引了。



由上图可以看到,是否使用索引,和返回的数据量有关。

sql - What is the minimum number of rows required to create an index?

这里说到,如果查询数据在1~5%时,才会使用索引,太多的话,直接去原表中查找。

还没有评论!