Php mysql查询,选择某个结果数组
我们有一个ID列表,例如: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); 这真的很符合逻辑
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来创建临时表除外)