复合主键对的查询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...

阅读 9.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题