【发布时间】:2019-10-11 17:04:47
【问题描述】:
我有一个与 mytable 唯一索引 (col1,col2) 上的连接的查询
explain
...
join mytable on col1=1 and col2=2
用type: eq_ref显示索引的正确使用
但是当使用列表时,索引不再使用
join mytable on col1=1 and col2 in (2,3,4)
Extra: Range checked for each record (index map: 0x1);
这给出了相同的结果:
join mytable on (col1,col2) in ((1,2),(1,3),(1,4))
有没有办法在提供值列表时使用索引?
【问题讨论】:
-
它可能取决于版本,但肯定在我的(相当旧的)sql 版本中,情况就是这样。因此,解决方案是将其写成一系列带括号的 OR。