我有两张 table 。一个名为 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
但如果一个用户关注了成千上万的用户,我不认为这对性能有好处
最佳答案
- 您忘记了
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
关于mysql twitter/facebook 喜欢状态提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4523317/