Php MySQL:连接(2个表)与单个查询(1个表)
在PHP中,我有一个由11人组成的数组,其中只给出了每个人的ID:Php MySQL:连接(2个表)与单个查询(1个表),php,mysql,optimization,select,Php,Mysql,Optimization,Select,在PHP中,我有一个由11人组成的数组,其中只给出了每个人的ID: $persons = array(1, 3, 39, 72, 17, 20, 102, 99, 77, 2, 982); 在我的MySQL数据库中有一个表,其中包含每个人的详细信息: TABLE personInfo - ID (integer) - name (string) - birth date (timestamp) - weight (decimal) - ... 问题: foreach ($perso
$persons = array(1, 3, 39, 72, 17, 20, 102, 99, 77, 2, 982);
在我的MySQL数据库中有一个表,其中包含每个人的详细信息:
TABLE personInfo
- ID (integer)
- name (string)
- birth date (timestamp)
- weight (decimal)
- ...
问题:
foreach ($persons as $person) {
$result = mysql_query("SELECT name FROM personInfo WHERE id = ".$person);
}
现在,我想为PHP数组中的每个ID选择匹配的名称。我只能想象两种解决方案:
1。for循环:
foreach ($persons as $person) {
$result = mysql_query("SELECT name FROM personInfo WHERE id = ".$person);
}
2。逻辑运算符或
$result = mysql_query("SELECT name FROM personInfo WHERE id = 1 OR id = 3 OR id = 39 OR ...");
两种解决方案都很慢,不是吗
但是如果我有另一个包含PHP数组ID的MySQL表
TABLE ids
- ID (integer)
。。。我可以使用连接来进行非常快速的MySQL查询,对吗
$result = mysql_query("SELECT a.ID, b.name FROM ids AS a JOIN personInfo AS b ON a.ID = b.ID");
问题:
foreach ($persons as $person) {
$result = mysql_query("SELECT name FROM personInfo WHERE id = ".$person);
}
到目前为止,所有这些都正确吗?如果是:为什么会这样?如果我有第二个表,MySQL查询会更快吗?因为只有一张桌子,所以速度非常慢?解决我的问题的最快方法是什么(选择与PHP数组ID匹配的名称)?如果你有ID,你应该只查询你的ID。所以
$result = mysql_query("SELECT name FROM personInfo WHERE id = 1 OR id = 3 OR id = 39 OR ...");
虽然我会使用
$result = mysql_query("SELECT name FROM personInfo WHERE id IN (1,2,3,4....) )
如果您有很多ID(几百个或更多),那么将这些值输入到临时表并连接它实际上会更快
您可能想阅读本文: