2021-05-13
MySQL 加上强制索引后查询反而更慢
10M环境: MySQL 5.6.16
【对表名和列名脱敏,SQL格式是完整的】
SELECT ID, 列2, 列3, 列4
FROM 表A
WHERE 时间列1 < ‘2020/5/13 16:00:20’
AND (时间列2 < ‘2020/5/13 16:00:20’ OR 时间列2 IS NULL)
AND 列4 IN (‘2’, ‘3’, ‘4’, ‘5’)
AND ID > XXXXX
ORDER BY ID
LIMIT 0, 200
这慢SQL在各库均要执行,时间条件是查询一年前 + 列4 条件不变 + id会变动。
列4 IN (‘2’, ‘3’, ‘4’, ‘5’) 的数据占总表3%~~~20%,再加上 AND ID > XXXXX 后数据量会更少。
MySQL自动执行计划是走主键,也就是ID列。 我强制走 force index (MemberGrade) 列索引,观察一个星期下来,在大部分库上的查询速度变快了,
但在小部分库查询速度反而下降几十倍【数据量变动很少】,这是什么原理?我强制走符合条件数据少的不是应该比走数据多的更快吗?
我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

评论
