mysql twitter / facebook就像状态Feed一样

时间:2010-12-23 23:47:23

标签: mysql facebook select twitter status

我有两张桌子。一个名为status的人就是这样......

user_id |  status
--------+-----------
      1 |  random status from user 1
      2 |  random status from user 2
      3 |  random message from user 3
      4 |  staus from user 4 
      1 |  second status for user1

...等 和另一个名为users_following的人......

user_id |  is_following
--------+-----------
      1 |  2
      1 |  3
      2 |  1
      3 |  2

表示用户1正在关注用户23等...

所以,假设我选择了用户1。显示用户1所关注用户的状态更新的最佳查询(性能明智)是什么,在这种情况下,用户23

目前我有类似

的东西
SELECT * from status WHERE user_id IN(SELECT is_following FROM users_following 
WHERE user_id='1') LIMIT 0,5 

但如果用户关注数千名用户

,我认为这对性能没有好处

1 个答案:

答案 0 :(得分:1)

  1. 您忘记了ORDER BY date_posted DESC(或status_id
  2. INNER JOIN在这里会更好

        SELECT s.*
          FROM status s
    INNER JOIN users_following f ON f.is_following = s.user_id
                                AND f.user_id = 1
      ORDER BY s.status_id DESC
         LIMIT 0, 5 
    
  3. 备注
    1.整数1周围没有单引号 2.您应该创建复合索引user_id + is_following