我正在为我的大学建立一个社交网站和告示板系统。
我想在主页的LoggedInUser的朋友中显示10到15个最新帖子。
如果我从数据库中选择所有时间轴表行,那么它将占用更多内存,并且还会获取不属于LoggedInUser的朋友的帖子。
那么最好的方法应该是什么呢?
帮助我。
表"朋友"存储UserID,FriendID和状态。 表"时间表"使用PostID和UserID
存储所有用户的帖子我正在使用Apache,PHP和MySQL。
...谢谢
答案 0 :(得分:2)
在构建社交网络之前,您需要仔细研究SQL连接。我不会撒谎。如果您计划构建任何类型的社交网络,这是一个非常基本的问题,您应该能够自己回答(没有Stack Overflow)。
那就是说,这里有两个可行的查询。你可以试着尝试两者,并阅读两者之间的差异,以及使用一个与另一个的性能影响。我还要提一下,这些将为您提供所需的PostID,但您需要加入一个帖子表(大概)来获取实际的帖子内容。我把这一步留给你了。
此外,在获取10-15个最新帖子方面,你需要问自己一个问题......你甚至可以用你列出的表回答这个问题吗?
提示:你不能。问题:为什么不呢?
查询选项1(获取属于friends的朋友的所有帖子ID .UserId = ???):
SELECT b.postid, b.userid
FROM friends AS a
INNER JOIN timeline AS b
ON a.FriendID = b.userid
WHERE a.UserID = ???
查询选项2(获取属于friends的朋友的所有帖子ID.UserId = ???):
SELECT b.postid, b.userid
FROM timeline AS b
WHERE EXISTS (SELECT * FROM friends
WHERE friends.UserID = ??? AND b.UserID = friends.FriendID)
现在,问题是:上面的两个查询都返回相同的结果吗?一个比另一个好吗?如果是这样,它总是优先考虑还是取决于具体情况?能给我举个例子?
答案 1 :(得分:0)
希望这有帮助,我还为学校项目建立了一个社交网站。