我有两张桌子。一个名为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
正在关注用户2
和3
等...
所以,假设我选择了用户1
。显示用户1
所关注用户的状态更新的最佳查询(性能明智)是什么,在这种情况下,用户2
和3
目前我有类似
的东西SELECT * from status WHERE user_id IN(SELECT is_following FROM users_following
WHERE user_id='1') LIMIT 0,5
但如果用户关注数千名用户
,我认为这对性能没有好处答案 0 :(得分:1)
ORDER BY date_posted DESC
(或status_id
) 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
备注强>
1.整数1
周围没有单引号
2.您应该创建复合索引user_id + is_following