我在MySql中有两列主键(id,id2)。 这些ID具有直接连接(对于ID = 1 ID2 = 11,对于ID = 2 ID = 22等)
我想知道是否有以下查询:
select * from my_table where id IN (1,2,3..) AND id2 IN (11,22,33..)
尽管它是主键,但实际上会损害性能。
将在循环中运行单个选择:
select * from my_table where id = 1 AND id2 = 11
select * from my_table where id = 2 AND id2 = 22
... 运行更快?
我相信答案是肯定的,因为每个id的查询都会将id2与整数列表进行比较。 这是对的吗? 另外,IN对于单列主键是否有所不同?
答案 0 :(得分:0)
IN
子句很短,则优化程序 可以非常高效地遍历表。SELECTs
本质上需要一个SELECT
来获取100行。 (这假定没有I / O和良好的索引。)因此,您需要拼命进行单选。换句话说,您用您的数据和您的 IN
列表对其进行测试。我们无法给您简单的答案。但是请注意,随着表的增长和/或您的IN
列表的更改,性能可能会发生变化。