选择集合中的行(field1,field2,field3)(val11,val21,val31),...,(val11,val21,val31)

时间:2012-08-13 07:37:23

标签: mysql sql optimization

我正在使用mysql。我需要从表中选择行(包含字段id,field1,field2,field3),其中(field1,field2,field3)位于向量集(v11,v21,v31),(v12,v22,v32),...,(v1N,v2N,v3N)中。是否可以使用一个查询执行此操作?如果是,我需要索引哪些字段来加速查询?这个查询比N串行简单选择查询更快/更慢吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以像这样进行多列IN比较:

SELECT id,
       field1,
       field2,
       field3
FROM   tbl
WHERE  (field1,field2,field3) IN (
           (v11,v21,v31),
           (v12,v22,v32),
           (v1n,v2n,v3n)
       )

它基本上是在说:

哪里

(field1 = v11 AND field2 = v21 AND field3 = v31) OR
(field1 = v12 AND field2 = v22 AND field3 = v32) OR
...                                              OR
...