1

我必须创建一个赞系统(名称不会是“赞”,Facebook 拥有它)。所以我想出了两种方法将这些喜欢存储在我的数据库中,我想知道,对于一个流量非常大的网站,哪种方式更好。

  1. 使用“id”、“comment_id”、“user_id”单元格创建表 comment_likes。在评论表中存储“like_count”,所以当我需要写出来的时候不需要计算它。但是点赞很容易做到,所以人们会创建很多点赞,如果我需要列出指定评论的点赞,我需要阅读整个comment_likes 表并找到所有user_id。这可能是未来数百万行。如果 1000 个用户同时执行此操作,我的系统将会死机。
  2. 我的第二个想法是,在评论表中存储喜欢。创建一个名为“likes”的单元格,其中包含这样的 user_ids 列表:1#34#21#56#.... 所以当有人喜欢/不喜欢评论时,只需用 # 连接或替换此单元格中的他/她的 id。当我需要列出指定的评论时,只需在#-s 处展开此列表。

我认为 2nd 可能会更快、更智能,但您对此有何看法?

4

1 回答 1

1

第一个选项要好得多,因为您有关系设置的好处。例如:如果你想从数据库 userId x 中获取评论怎么办?使用第一个设置,这是一个快速而简单的查询。在第二种情况下,您将不得不使用 LIKE,这要慢得多且不准确。(假设 userId 为 1,comments 表中的 likes 字段包含 #10 - 如果您使用 LIKE '%1%',它将返回评论)。

甚至对于高流量网站;只需在commentId 上使用索引就可以快速操作。

所以选择第一个选项。

如果您真的怀疑第一个选项的速度,您可以在评论表中创建一个“缓存”字段,您可以在其中计算喜欢的数量,这样您就不必执行子查询来选择喜欢的数量。

于 2013-04-19T16:42:08.643 回答