基本上是您所有朋友最近帖子的实时提要。
在一种愚蠢的方法中,我想我会首先构建一个查询,例如:
SELECT * FROM tblposts WHERE userid=
朋友ID_1 朋友OR userid=
ID_2......
等等
其中friend_id_% 是您朋友列表中朋友的用户ID。但这一定是一种非常低效的方法,对吧?在 MySQL 中有没有更快的方法来做到这一点?也许一些聪明的数据库模式?
(我知道FB使用Hadoob,但我没有足够的经验去那么远:()
基本上是您所有朋友最近帖子的实时提要。
在一种愚蠢的方法中,我想我会首先构建一个查询,例如:
SELECT * FROM tblposts WHERE userid=
朋友ID_1 朋友OR userid=
ID_2......
等等
其中friend_id_% 是您朋友列表中朋友的用户ID。但这一定是一种非常低效的方法,对吧?在 MySQL 中有没有更快的方法来做到这一点?也许一些聪明的数据库模式?
(我知道FB使用Hadoob,但我没有足够的经验去那么远:()
如果您有要查询的 ID 列表,则应使用 IN:
SELECT * FROM tblposts WHERE userid IN (friend_id_1, friend_id_2, ...)
但在这种情况下,我认为您可以改用联接。
SELECT * FROM tblposts AS T1
JOIN (
SELECT friendid -- I just made up this query.
FROM friends -- You need to replace it with the
WHERE userid = 'youruserid' -- real query to get someone's friends.
) AS T2
ON T1.userid = T2.friendid
很抱歉,但我认为上面的查询暗示该friends
表有很多冗余记录?(x 是 y 的朋友,y 是 x 的朋友;2 条记录?)
如果friends
表有字段sender_id
receiver_id
,request_status
那么是否可以修改上面的查询,使其返回好友列表youruserid
,即如果 sender_id==youruserid 则选择receiver_id 的值,反之亦然,这样我们就得到了所有好友的列表youruserid
?我想不出更好的表来避免重复。