mysql5.7一个关于索引的奇怪问题
有个表ra203长这样:
CREATE TABLE `ra203` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`CompanyID` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '',
`CompanyName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`StatDate` date NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `IDX_RA203_A`(`CompanyID`, `StatDate`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
当表里面的记录大于8行的时候,执行下面的查询,不走索引:
select * from ra203 where CompanyID='39F3DA1758E3F714EF9D71FBAEE750BF' and StatDate > '2019-01-01'
1 SIMPLE ra203 ALL IDX_RA203_A 9 100 Using where
但是,当删除一行到8行记录的时候,同样的查询就走索引了
1 SIMPLE ra203 range IX_RA203_A IDX_RA203_A 157 1 100 Using index condition
innodb_buffer_pool_size=8M
虽然>在这应该有影响,但是为什么会和行数有关想不明白。
感觉似乎和mysql内存相关的配置有关,但是翻看了文档没有找到,innodb_buffer_pool_size的8M个记录以及索引大小也看不出来问题所在。
推荐文章: