我想知道哪一个更快(性能方面)查询(如果这很重要的话,在MySQL 5.x CentOS 5.x上):
SELECT * FROM table_name WHERE id=1;
SELECT * FROM table_name WHERE id=2;
.
.
.
SELECT * FROM table_name WHERE id=50;
...或
SELECT * FROM table_name WHERE id IN (1,2,...,50);
我有大约50个id
来查询。我知道通常DB连接很昂贵,但我已经看到IN
子句[有时]不是那么快。
答案 0 :(得分:3)
我很确定第二个选项可以为您提供最佳性能;一个查询,一个结果。你必须开始寻找>之前的100个项目可能会成为一个问题。
另请参阅此处接受的答案:MySQL "IN" operator performance on (large?) number of values
答案 1 :(得分:2)
恕我直言,你应该尝试并测量响应时间:IN
应该会给你更好的表现...
无论如何,如果您的ID是连续的,您可以尝试
SELECT * FROM table_name WHERE id BETWEEN 1 AND 50
答案 2 :(得分:0)
这是另一个讨论使用OR与IN的性能的帖子。 IN vs OR in the SQL WHERE Clause
您建议使用多个查询,但使用OR也可以。
答案 3 :(得分:0)
第二个会更快,因为在查询被解释时消耗资源,并且在与mysql进行php通信时发送查询并等待结果,如果你的数据是顺序的,你也可以只做
SELECT * FROM table_name WHERE id <= 50;
答案 4 :(得分:0)
我在IN
条款中试验了3000多个值后,正在研究这个问题。事实证明,由于SELECT
中引用的列没有键入,因此比单个IN
更快。我的猜测是,在我的情况下,它只需要为该列构建一次临时索引而不是3000次单独的时间。