SELECT user_id, id
FROM user_detail
WHERE id % 10 = 3
ORDER BY updated_at ASC
LIMIT 10
id 取余运算,在运算符前面,无法使用索引,请问有什么好的优化办法?
SELECT user_id, id
FROM user_detail
WHERE id % 10 = 3
ORDER BY updated_at ASC
LIMIT 10
id 取余运算,在运算符前面,无法使用索引,请问有什么好的优化办法?
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
这种运算无法走索引,数据量小还可以,如果数据量大了是否可以这样做:
第一步:查询出所有id
第二步:使用代码在内存计算出id % 10 = 3的满足条件的id集合
第三步:使用in进行查询(如果上一步ids量太大,也可以考虑分批查询)。
虽然访问了2次数据库,但是这样两步都会走id索引,应该会比之前更快。