Php Mysql存储“Facebook喜欢”之类的东西

Php Mysql存储“Facebook喜欢”之类的东西,php,facebook,facebook-like,Php,Facebook,Facebook Like,我必须创建一个类似的系统,它的名字不会像Facebook拥有的那样。 因此,我设想了两种方法将这些喜好存储在我的数据库中,我想知道,对于流量非常高的网站,哪种方法更好 使用id、注释id、用户id单元格创建表注释。在comments表中存储like_count,所以当我需要写出它时,我不需要计算它。但是喜欢很容易做到,所以人们会创建很多喜欢的评论,如果我需要列出某个特定评论的喜欢,我需要阅读整个评论喜欢表并找到所有的用户ID。未来可能会有数百万行。如果1000个用户同时这么做,我的系统就会死掉。

我必须创建一个类似的系统,它的名字不会像Facebook拥有的那样。 因此,我设想了两种方法将这些喜好存储在我的数据库中,我想知道,对于流量非常高的网站,哪种方法更好

使用id、注释id、用户id单元格创建表注释。在comments表中存储like_count,所以当我需要写出它时,我不需要计算它。但是喜欢很容易做到,所以人们会创建很多喜欢的评论,如果我需要列出某个特定评论的喜欢,我需要阅读整个评论喜欢表并找到所有的用户ID。未来可能会有数百万行。如果1000个用户同时这么做,我的系统就会死掉。 我的第二个想法是,在评论表中存储喜欢的内容。创建一个名为likes的单元格,其中包含如下用户ID列表:1342156。。。。 因此,当有人喜欢/不喜欢某个评论时,只需在该单元格中使用一个。当我需要列出指定的注释时,只需在-s处分解这个列表。
我认为第二种可能更快、更智能,但您对此有何看法?

第一种选择更好,因为您有关系设置的好处。例如:如果您想从userId x喜欢的数据库中获取注释,该怎么办?在第一次设置中,这是一个快速而简单的查询。在第二种情况下,您将不得不使用LIKE,这是非常缓慢和不准确的。假设userId为1,comments表中的likes字段包含10-如果使用LIKE“%1%”,它将返回注释

甚至对于高流量站点;只要在commentId上使用索引,这将是一个快速的操作

因此,选择第一个选项


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

第一个选项要好得多,因为您具有关系设置的好处。例如:如果您想从userId x喜欢的数据库中获取注释,该怎么办?在第一次设置中,这是一个快速而简单的查询。在第二种情况下,您将不得不使用LIKE,这是非常缓慢和不准确的。假设userId为1,comments表中的likes字段包含10-如果使用LIKE“%1%”,它将返回注释

甚至对于高流量站点;只要在commentId上使用索引,这将是一个快速的操作

因此,选择第一个选项


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

第二种方法将遇到问题-如果您创建的列太小,无法存储所有数据怎么办?此外,您只能使用带有LIKE的查询来搜索它,这意味着它会更慢,因为索引将无法工作。第一种方法将产生更多的行,但是使用索引,速度会快得多。第二种方法将遇到问题-如果您创建的列太小,无法存储所有数据,该怎么办?此外,您只能使用带有LIKE的查询来搜索它,这意味着它会更慢,因为索引将无法工作。第一个选项将产生更多的行,但是使用索引,它将非常、非常快。谢谢,所以我会按照你说的做。谢谢,所以我会按照你说的做。