MYSQL查询WHERE IN与OR

时间:2012-12-20 02:14:25

标签: mysql sql where-in

我使用OR查询开发了一个系统:

SELECT * FROM tableA 
JOIN tableB ON (idA = idB)
WHERE idA = 1 OR 
      idA = 2 OR 
      idA = 3 OR 
      idA = 4 OR 
      idA = 5 ...... OR 
      idA=100

与查询IN:

比较
SELECT * 
FROM tableA JOIN tableB ON (idA = idB)
WHERE idA IN (1,2,3,4,5,......,100)

MYSQL数据库中最好的查询是什么?

4 个答案:

答案 0 :(得分:11)

使用IN。

IN将使用索引。

或者(afaik)不使用索引。

另外,这一点不要打喷嚏,IN版本:

  • 使用更少的代码
  • 更容易维护
  • 更容易理解

仅仅由于这些原因,我会做好准备以获得一些性能来获得代码质量,但实际上你也获得了性能。

答案 1 :(得分:4)

在这种情况下,您应该通过EXPLAIN运行查询,以检查它对您的数据的工作方式。例如:

EXPLAIN SELECT * FROM tableA

JOIN tableB ON (idA = idB)

WHERE idA = 1 OR idA = 2 OR idA = 3 OR idA = 4 OR idA = 5 ...... OR idA=100

这将提供几个统计数据,并显示它是否正在使用索引,顺序扫描等。从中您将能够确定哪种方法最适合您的情况。

但是,一般来说,我会选择IN。

以前的工作已经确定IN几乎总是更快:MYSQL OR vs IN performance

答案 2 :(得分:0)

SELECT * FROM tableA

JOIN tableB ON (idA = idB)

WHERE idA <= 100

答案 3 :(得分:0)

永远不要使用或如果你有In作为替代。

它使你的查询超级慢