我正在为我的大学建立一个社交网站和公告板系统。数据库查询社交网站的时间表
我想在Home Page中显示来自LoggedInUser的朋友的10到15条最新帖子。
如果我从数据库中选择时间表表中的所有行,那么它将消耗更多的内存并获取不属于LoggedInUser的朋友的帖子。
那么最好的办法是什么?
帮帮我。
表“朋友”存储用户ID,FriendID和状态。 表“时间轴”存储所有用户PostID和用户ID的帖子我正在使用Apache,PHP和MySQL的
。
谢谢...
我正在为我的大学建立一个社交网站和公告板系统。数据库查询社交网站的时间表
我想在Home Page中显示来自LoggedInUser的朋友的10到15条最新帖子。
如果我从数据库中选择时间表表中的所有行,那么它将消耗更多的内存并获取不属于LoggedInUser的朋友的帖子。
那么最好的办法是什么?
帮帮我。
表“朋友”存储用户ID,FriendID和状态。 表“时间轴”存储所有用户PostID和用户ID的帖子我正在使用Apache,PHP和MySQL的
。
谢谢...
你会想看看SQL连接非常认真你去建立一个社交网络之前。我不会说谎。如果您打算构建任何形式的社交网络,这是一个非常基本的问题,您应该可以自己回答(没有Stack Overflow)。
这就是说,这里有两个查询将工作。你可以尝试两种方法并阅读两者之间的差异,以及使用一个和另一个的性能影响。我还应该提到,这些会为您提供您需要的PostID,但您需要将它们与帖子表(大概)结合起来以获取实际的帖子内容。我把这一步留给你。
此外,就获得10-15个最新帖子而言,您需要问自己一个问题......您甚至可以用列出的表回答这个问题吗?
提示:你不能。问:为什么不呢?
查询选项1(得到所有的交IDS属于friends.UserId =朋友???):
SELECT b.postid, b.userid
FROM friends AS a
INNER JOIN timeline AS b
ON a.FriendID = b.userid
WHERE a.UserID = ???
查询选项2(被所有的交IDS属于朋友的朋友.UserId = ???):
SELECT b.postid, b.userid
FROM timeline AS b
WHERE EXISTS (SELECT * FROM friends
WHERE friends.UserID = ??? AND b.UserID = friends.FriendID)
现在,你一个问题:你以上的回报这两个查询相同的结果?一个比另一个更好吗?如果是这样,它总是更好还是取决于情况?你可以给我一个例子吗?
希望这有助于我也建立了一个学校项目的社交网站。
您是否考虑过在时间表中添加时间戳,以便您可以搜索最新帖子并向后计算给定用户ID的最新帖子数。 – Kinnectus 2014-10-20 20:20:57