2012-08-13 53 views
1

我正在使用mysql。我需要從表中選擇行(字段爲id,field1,field2,field3),其中(field1,field2,field3)在向量集(v11,v21,v31),(v12,v22,v32),...,(v1N,v2N,v3N)中。有一個查詢可以做到嗎?如果是,我需要索引哪些字段以加快查詢速度?並且這個查詢更快/更慢然後N連續簡單的選擇查詢?在set(val11,val21,val31),...,(val11,val21,val31)中選擇行(field1,field2,field3)

預先感謝您!

回答

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 
... 
+0

謝謝!以及索引和性能如何? – Eugeny89 2012-08-13 07:43:38

+0

@ Eugeny89最好在所有三個字段上設置一個複合索引:'(field1,field2,field3)'。 – 2012-08-13 07:44:20

相關問題