复合主键对的查询sql该如何写

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,先去试试。

参考资料:

http://stackoverflow.com/ques...

查看回复