Mysql - 如何从您关注的用户那里获取新闻源

时间:2015-12-02 21:36:13

标签: php mysql

我已经在这个问题上工作了好几个小时了,而且累了。我希望用户和我自己的用户发帖,就像推特一样。

所以有一个表users_posts,其中包含所有用户'列user_id的帖子可以确定发帖的人。

包含所有关注者的另一个表users_followers,即。 user_id跟随following_id

所以这是我的疑问:

用户ID = 2271

SELECT users_followers.following_id AS following_id, users_posts.id
FROM users_followers, users_posts
WHERE users_posts.user_id = users_followers.following_id
AND (users_followers.user_id =2271)

此查询有效,但问题是,它有点慢。有更快的方法吗?

此外,正如您所看到的,我只能从我关注的人那里获得帖子,而不是我自己。

任何帮助?

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的表格,我会使用明确的JOIN执行此操作。我不确定与你使用的隐式JOIN相比会加快多少。

SELECT following_id, p.id
FROM users_followers f
LEFT JOIN users_posts p
    ON (p.user_id = f.following_id)
WHERE f.user_id = 2271

有可能,在表格中添加一两个索引会有所帮助。

使用MySQL EXPLAIN命令(只需将其放在SELECT查询前面)将显示用于查询的索引,临时表和其他资源。当一个查询比另一个查询更快或更有效时,它应该让您知道。

答案 1 :(得分:0)

如果您已正确索引表格,那么您的查询就可以了。您至少需要在users_posts.user_id和users_followers.following_id上建立索引。

即使完全编制索引,也可以通过大量记录来减慢查询速度。在这种情况下,我发现phpmyadmin是一个非常宝贵的工具。从服务器页面(可能是localhost)中选择Status选项卡,以查看有关mysql服务器执行情况的大量信息以及如何改进它的建议。