我使用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数据库中最好的查询是什么?
答案 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作为替代。
它使你的查询超级慢