SELECT * FROM table
WHERE (a, b) IN (('AAA', 111), ('BBB', 222), ...);
这种sql有没有更优的写法?
在mysql 5.6,这种写法是不会走索引的,除非用
FORCE INDEX
;在mysql 5.7,这种写法在IN参数超过一定量之后,也是不会走索引的。
2016年11月9日更新
在StackOverflow找到个写法,用NATURAL JOIN
,先去试试。
参考资料:
SELECT * FROM table
WHERE (a, b) IN (('AAA', 111), ('BBB', 222), ...);
这种sql有没有更优的写法?
在mysql 5.6,这种写法是不会走索引的,除非用
FORCE INDEX
;在mysql 5.7,这种写法在IN参数超过一定量之后,也是不会走索引的。
2016年11月9日更新
在StackOverflow找到个写法,用NATURAL JOIN
,先去试试。
参考资料:
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决