我有两个表:
其中一个称为数据,每个 ID 只有一行(唯一)。 第二个称为图像,每个 ID 有 3 行。
每次加载页面时,我都想获取恰好 5 个不同 ID 的数据和一张图像。
我现在的问题是:两个单独的 SELECT 查询或一个将两者连接起来的查询。
查询:
...
$all = $row["iD"] // includes **5** last iDs - fetched from DB
$all = implode(',',$all);
SELECT Name, Address FROM data WHERE iD IN($all);
SELECT url FROM images WHERE iD IN ($all) LIMIT 1;
我在页面上已经有 3 个其他选择查询,因此我想知道什么是性能最好的查询,一个较大的连接查询或两个较小的更快的查询。
如果加入,这两个将如何加入?
最佳答案
您每个 ID 有三张图像,并且希望每个 ID 一张图像用于最后插入的图像(也称为“最近内容”)?
然后您可以使用一种简单的自然连接与分组依据相结合,如下所示:
SELECT d.Name, d.Address, MAX(i.url)
FROM data d, images i
WHERE i.iD = d.iD
GROUP BY d.Name, d.Address
ORDER BY d.iD DESC
LIMIT 5
大多数时候,最好结合选择来跳过编程开销(例如,在循环本身中调用 mysql_query())。 但有时这取决于底层数据。
关于php - Mysql查询: joined or separate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214864/