Php mysql查询,选择某个结果数组

Php mysql查询,选择某个结果数组,php,mysql,Php,Mysql,我们有一个ID列表,例如: 11, 22, 55, 99, 187 我们有一个字段为“id”的表 我们基本上希望选择id等于11,22,55,99,187 像这样执行mySQL查询的最佳方法是什么 而不是执行WHEREid=“11”或“22” 我们在PHP中使用它,因为我们有一个ID列表,希望通过mysql查询使用这些ID来选择结果。您可以使用mysql的 比如: SELECT id from table where id IN (11, 22, 55, 99, 187); 这真的很符合逻辑

我们有一个ID列表,例如:

11, 22, 55, 99, 187
我们有一个字段为“id”的表

我们基本上希望选择
id
等于
11,22,55,99,187

像这样执行mySQL查询的最佳方法是什么

而不是执行
WHERE
id
=“11”或“22”

我们在PHP中使用它,因为我们有一个ID列表,希望通过mysql查询使用这些ID来选择结果。

您可以使用mysql的

比如:

SELECT id from table where id IN (11, 22, 55, 99, 187);
这真的很符合逻辑,只要阅读手册就可以了。

您可以使用mysql的

比如:

SELECT id from table where id IN (11, 22, 55, 99, 187);
这很合乎逻辑,只要看一下手册就可以了。

用这个

Where id IN (11,22,55,99,187)
用这个

Where id IN (11,22,55,99,187)
试用条款

试入条款


如其他答案所述,您可以在(…)
子句中使用
。但是,如果您有一长串id值,并且希望获得最佳性能,那么我建议使用临时表存储这些值,然后在临时表上使用
内部联接

/* Create the temporary table */
CREATE TEMPORARY TABLE temp_lookup (id INT NOT NULL);
/* Insert values in temp table */
INSERT INTO temp_lookup (id) VALUES (11), (22), (55), (99), (187), ...;
/* Select using INNER JOIN */
SELECT mt.field_list
FROM main_table AS mt INNER JOIN temp_lookup AS tt ON mt.id = tt.id

如其他答案所述,您可以在(…)
子句中使用
。但是,如果您有一长串id值,并且希望获得最佳性能,那么我建议使用临时表存储这些值,然后在临时表上使用
内部联接

/* Create the temporary table */
CREATE TEMPORARY TABLE temp_lookup (id INT NOT NULL);
/* Insert values in temp table */
INSERT INTO temp_lookup (id) VALUES (11), (22), (55), (99), (187), ...;
/* Select using INNER JOIN */
SELECT mt.field_list
FROM main_table AS mt INNER JOIN temp_lookup AS tt ON mt.id = tt.id

你真的测试过这个还是有参考资料?好处是什么?我运行了一个非常有限的测试(4个查找值/160k记录),没有看到任何增益,实际上看到了更差的性能-0.12s vs 0.20s。在此之后,我在temp_查找中使用33个不同的值进行了另一个测试-join/temp的值为0.62时与in的值为0.12时的差异。我看不到任何证据(或逻辑)表明临时表可以更快地工作。(两种测试都在id上没有索引的情况下运行,两种方法的索引都在0.0s内运行;但临时表1需要0.03s来创建临时表除外)您是否实际测试了这一点,或者是否有一些引用?好处是什么?我运行了一个非常有限的测试(4个查找值/160k记录),没有看到任何增益,实际上看到了更差的性能-0.12s vs 0.20s。在此之后,我在temp_查找中使用33个不同的值进行了另一个测试-join/temp的值为0.62时与in的值为0.12时的差异。我看不到任何证据(或逻辑)表明临时表可以更快地工作。(两个测试都在id上没有索引的情况下运行,两种方法的索引都在0.0s内运行;但临时表1需要0.03s来创建临时表除外)