この問題でクエリをループすることについて、社内で内部討論を行っています。
$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)
{
// ...
}
これに関する追加情報、データベースは巨大で、何百万行もあります。
もちろん、私はこの質問に対する答えを探しましたが、誰もこれに良い方法で答えることができず、多くの賛成票を投じて、一方の方法が他方の方法よりも優れていることを確信させてくれます。
質問
これらの方法の1つが他の方法よりも優れている理由を誰かが説明できますか?