检查帖子是否在收藏夹列表中的最佳方式

时间:2017-03-01 18:48:26

标签: javascript mysql performance web-applications

我正在构建一个社交媒体网络应用程序,我在数据库上有这样的东西:

表收藏: 用户身份;帖子ID;

在网络应用程序主控制器上是这样的:

var posts = [{postId: x, content: 'content'}];
var favorites = [{postId: x, userid: y}];

但是,当我在网络应用程序上加载所有帖子(不仅仅是收藏夹)时,我不知道最好的方法来检查给定帖子是否在用户的收藏夹中,以便为其中嵌入的心脏图标着色。

我有所有用户的最爱,但在性能方面有什么好处?最愚蠢的方法是检查给定帖子的postId是否在任何用户收藏夹对象中,但我认为它看起来很糟糕且收益率很低。

P.S:网络应用程序将在主视图中加载至少200个帖子,它们将填充分成小方块的屏幕。所以这就是为什么我需要一些优秀的性能,每当用户到达屏幕底部时,该应用程序就会加载200个帖子。

P.S:我知道这是概念问题,但如果有人需要知道我使用的是什么语言的所有javascript(端到端)+ MySQL。

先谢谢你们。

1 个答案:

答案 0 :(得分:1)

鉴于这些表格:

  • 收藏夹:postId,userId
  • 用户:userId,{more atts}
  • 帖子:postId,userId,{more atts}

    SELECT posts。*,IF(posts.postId IN(SELECT postID FROM Favorites WHERE userId = anId),true,false)asFavorited FROM Posts posts LIMIT 200;

此查询转到帖子并检索其中的200个。如果postId位于该userId(anID)的Favorite表中,则isFavorited为1,否则为false。

希望它有所帮助。