加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MySql > 正文

php – 循环中的MySQL查询与使用SQL连接的查询

发布时间:2020-05-24 09:12:48 所属栏目:MySql 来源:互联网
导读:我正在公司内部讨论如何在这个问题上循环查询:$sql = SELECT foreign_key FROM t1; foreach(fetchAll($sql) as $row) { $sub_sql = SELECT * FROM t2 WHERE t2.id = . $row[foreign_key]

我正在公司内部讨论如何在这个问题上循环查询:

$sql = "
  SELECT foreign_key
  FROM t1";

foreach(fetchAll($sql) as $row)
{
  $sub_sql = "
    SELECT *
    FROM t2
    WHERE t2.id = " . $row['foreign_key'];

  foreach(fetchAll($sub_sql) as $sub_row)
  {
    // ...
  }
}

而不是像这样使用sql连接:

$sql = "
  SELECT t2.*
  FROM t2
  JOIN t1
  ON t1.foreign_key = t2.id";

foreach(fetchAll($sql) as $row)
{
  // ...
}

关于这个的额外信息,数据库是巨大的,数百万行.

我当然搜索了这个问题的答案,但是没有人能够以一种好的方式回答这个问题并且通过大量的投票让我确信一种方式比另一种更好.

有人可以向我解释为什么其中一种方法比另一种更好?

最佳答案 通常认为join方法更好,只是因为它减少了向数据库来回发送查询的开销.

如果表上有适当的索引,那么这两种方法的基本性能将是相似的.也就是说,两种方法都将使用适当的索引来获取结果.

从数据库的角度来看,join方法要优越得多.它将数据逻辑整合在一个地方,使代码更加透明.它还允许数据库进行在应用程序代码中可能不明显的优化.

(编辑:安卓应用网)

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

    推荐文章
      热点阅读