[英]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.