多表关联查询语句中在in里面放一个巨大的用户id数组导致查询时间过长如何优化?
1、查询语句如下图,执行时间为147.4ms。
WHERE id IN (1,2,3)相当于WHERE id = 1 OR id = 2 OR id =3OR条件那么多,就算id上有索引慢也是正常的.
WHERE id IN (1,2,3)
WHERE id = 1 OR id = 2 OR id =3
这种问题的根源是表结构设计不合理,优化查询也是治标不治本的事所以设计结构的时候不要太着急另外,多用用EXPLAIN
为什么不把这组id对应的记录都加一个标志字段来区分呢,那样不就只需要where flag = ??不就可以了吗
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
2 回答3k 阅读
3 回答2.2k 阅读
1 回答2.3k 阅读✓ 已解决
2 回答4.1k 阅读
4 回答5k 阅读
WHERE id IN (1,2,3)
相当于WHERE id = 1 OR id = 2 OR id =3
OR条件那么多,就算id上有索引慢也是正常的.