显示朋友帖子的最佳方式是什么?
每个用户最多可以有5000个朋友。
步骤:
1)mysql检索5000个朋友的用户名。
2)在php数组中存储5000个朋友的用户名。
3)SELECT posts, datatime FROM tbl_posts WHERE username IN ($array) ORDER BY id DESC LIMIT 10;
问题:假设zac1987是php数组中的第5000项。如果zac1987发布了10个最新帖子,mysql是否需要浪费时间来遍历5000个项目以确定帖子是否由他发布?因此,如果我想显示10个最新帖子,mysql是否需要循环通过5000个朋友x 10个帖子= 50,000个项目?并且每5秒需要检查一下是否有新帖子,这意味着每5秒需要循环50,000个项目?有没有什么方法可以阻止这么多的循环/过滤项处理?
答案 0 :(得分:3)
SELECT p.*
FROM friend f
JOIN post p
ON p.author = f.friend_id
WHERE f.user_id = $myuserid
ORDER BY
p.post_date DESC
LIMIT 10
您应该在post (post_date)
,post (author)
,friend (friend_id, user_id)
根据基数,MySQL
将使post
在联接中领先(在这种情况下将使用第一个索引)或使friend
领先(在这种情况下,它将收集所有朋友的帖子并对其进行排序。)