繁体   English   中英

在php / mysql中使用连接或多个查询

[英]using joins or multiple queries in php/mysql

在这里我需要帮助加入。 我有两个表说文章和用户。 在显示文章时,我还需要显示用户信息,如用户名等。如果我只是使用联接来加入文章和用户表来获取用户信息,同时显示如下文章,这样会更好。

SELECT a.*,u.username,u.id FROM articles a JOIN users u ON u.id=a.user_id

或者这可以在PHP中。 首先我得到以下sql的文章

SELECT * FROM articles

然后我得到文章数组后我循环,并获得每个循环内的用户信息,如下所示

SELECT username, id FROM users WHERE id='".$articles->user_id."';

哪个更好,我可以解释为什么。 感谢您的任何回复或意见

还有第三种选择。 你可以先得到文章:

 SELECT * FROM articles

然后一次性获取所有相关的用户名:

 SELECT id, username FROM users WHERE id IN (3, 7, 19, 34, ...)

这样,您只需要两次而不是多次访问数据库,但是您不会获得重复数据。 话虽如此,似乎你的查询中没有那么多的重复数据,所以第一个查询在这种特定情况下也可以正常工作。

我可能会选择这个特定情况下的第一个选项,因为它很简单,但如果你需要为每个用户提供更多信息,那么请选择第三个选项。 我可能不会选择你的第二个选项,因为它既不是最快的也不是最简单的。

这取决于查询返回的数据量 - 如果您将获得大量重复数据(即一个用户撰写了大量文章),您最好单独进行查询。

如果您没有大量重复数据,则连接始终是首选,因为您只需访问数据库服务器。

如果适用/可能,第一种方法更好:

SELECT a.*, u.username, u.id 
FROM articles a 
JOIN users u ON u.id = a.user_id
  • 你必须编写更少的代码
  • 无需运行多个查询
  • 尽可能使用连接是理想的

使用一个查询获取文章,然后获取每个用户名一次,而不是每次显示它(将它们缓存在数组或其他任何内容中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM