加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – MySQL:加入(2个表)vs单个查询(1个表)

发布时间:2020-12-11 23:48:26 所属栏目:MySql教程 来源:网络整理
导读:在PHP中,我有一个11人的数组,其中只给出了每个人的身份证: $persons = array(1,3,39,72,17,20,102,99,77,2,982); 在我的MySQL数据库中,有一个表格,其中包含有关每个人的详细信息: TABLE personInfo - ID (integer) - name (string) - birth date (timestam

在PHP中,我有一个11人的数组,其中只给出了每个人的身份证:

$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)
 - ...

问题:

所以现在,我想为PHP数组中的每个ID选择匹配的名称.我只能想象两种解决方案:

1. for-loop:

foreach ($persons as $person) {
    $result = mysql_query("SELECT name FROM personInfo WHERE id = ".$person);
}

2.逻辑运算符OR

$result = mysql_query("SELECT name FROM personInfo WHERE id = 1 OR id = 3 OR id = 39 OR ...");

两种解决方案都很慢,不是吗?

但是,如果我有另一个MySQL表包含PHP数组的ID …

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");

题:

到目前为止这一切都正确吗?如果是:为什么会这样?如果我有第二个表,MySQL查询会更快吗?只有一张桌子,速度非常慢?解决我的问题的最快方法是什么(选择与PHP数组的ID匹配的名称)?

最佳答案 如果你有很多id(数百或更多),将值提供给临时表并加入它实际上更快.

您可能想阅读这篇文章:

> Passing parameters in MySQL: IN list vs. temporary table

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读