数据量占总表的百分比过大导致索引失效
最近在做报表查询时 使用关键字explain对sql解释发现 在条件不变的情况下对索引列的条件不一样会导致索引失效。使用强制索引的情况下问题解决
建表语句
CREATE TABLE `hm_bs_rec` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '物理主键',
`rec_time` datetime NOT NULL COMMENT '记录时间',
`blood_sugar` decimal(6,2) DEFAULT NULL COMMENT '值',
PRIMARY KEY (`id`),
KEY `recTimeIndex` (`rec_time`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=903001000003691 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT
问题:在执行相同的sql时因为查询条件的日期不一样导致索引失效
这里查询时间在2020-07-28时使用了索引
这里查询时间在2020-07-27时因为多了一天的数据量导致索引失效,而且这里查出来的数据量占总表的17.06%
这里就很纳闷不知道为什么索引失效了 咨询了度娘后发现是因为数据量超过一定百分比导致索引失效了 又说是20%时就失效了也有说30%。但是我这里测试查出来的数据量还没有达到20%时就导致索引失效了。也可能是因为这个表的数据太少只有3000+的数据导致。希望有知道的大哥能给小弟解惑一下
后来使用强制索引的时候发现就不会因为数据量的原因导致索引失效了
到这里索引失效的问题完美解决了