【发布时间】:2013-08-26 15:04:24
【问题描述】:
我的公司内部正在就这件事上的循环查询进行内部辩论:
$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)
{
// ...
}
有关此的其他信息,数据库很大,有数百万行。
我当然已经搜索过这个问题的答案,但是没有人能以好的方式回答这个问题,并且有很多赞成票让我确信一种方法比另一种更好。
问题
有人可以向我解释为什么其中一种方法比另一种更好吗?
【问题讨论】:
-
视情况而定。多重选择是否比连接快,没有单一的答案。您将不得不自己测试哪个更快。另请查看:stackoverflow.com/questions/1067016/…