php - Mysql查询: joined or separate

标签 php mysql

我有两个表:

其中一个称为数据,每个 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/

相关文章:

php - 使用 Paypal 沙盒时,请登录以使用 Paypal 沙盒功能

mysql - 如何使用 LIKE 进行搜索,包括空格和空格?

mysql - LOAD DATA LOCAL INFILE COMMAND 几个错误

mysql - 创建未出现值的所有行的列表

MySQL:两个表共享公共(public) "date"列,如何在 JOIN 后将日期一起排序?

jquery - 检查逗号分隔值中存在或不存在的值

php - Web 应用程序中的 "Undoing deletes"?

php - jw播放器: Error loading player: No playable sources found

php - 路由 [verification.resend] 未定义

php - 在 Codeigniter 中创建我自己的 base_url()