1

基本上是您所有朋友最近帖子的实时提要。

在一种愚蠢的方法中,我想我会首先构建一个查询,例如:

SELECT * FROM tblposts WHERE userid=朋友ID_1 朋友OR userid=ID_2......等等

其中friend_id_% 是您朋友列表中朋友的用户ID。但这一定是一种非常低效的方法,对吧?在 MySQL 中有没有更快的方法来做到这一点?也许一些聪明的数据库模式?

(我知道FB使用Hadoob,但我没有足够的经验去那么远:()

4

2 回答 2

2

如果您有要查询的 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
于 2010-03-28T21:46:11.163 回答
0

很抱歉,但我认为上面的查询暗示该friends表有很多冗余记录?(x 是 y 的朋友,y 是 x 的朋友;2 条记录?)

如果friends表有字段sender_id receiver_idrequest_status那么是否可以修改上面的查询,使其返回好友列表youruserid,即如果 sender_id==youruserid 则选择receiver_id 的值,反之亦然,这样我们就得到了所有好友的列表youruserid?我想不出更好的表来避免重复。

于 2010-03-29T13:20:12.900 回答