实施";跟随;使用PHP和Mysql的用户特性

实施";跟随;使用PHP和Mysql的用户特性,php,mysql,web-applications,memcached,Php,Mysql,Web Applications,Memcached,问题:我在一种电子商务平台上工作,该平台有卖家和买家。现在,在我的情况下,卖家也可以是买家,即每个用户都可以买卖。 因此,我有一个名为users的表。现在我想实现一个follow vendor/user功能,用户可以单击follow,然后在他的帐户下看到该供应商列出的所有商品(直到他取消follow)。 现在,我的传统方法是使用一个表,该表有一个键和两列来存储跟随者和后面的例如: |id | userId | vendorId因此当用户继续跟踪其他人时,它将水平移动。但是如果我有一个用户跟踪许多

问题:我在一种电子商务平台上工作,该平台有卖家和买家。现在,在我的情况下,卖家也可以是买家,即每个用户都可以买卖。
因此,我有一个名为users的表。现在我想实现一个follow vendor/user功能,用户可以单击follow,然后在他的帐户下看到该供应商列出的所有商品(直到他取消follow)。

现在,我的传统方法是使用一个表,该表有一个键和两列来存储跟随者和后面的例如:
|id | userId | vendorId

因此当用户继续跟踪其他人时,它将水平移动。但是如果我有一个用户跟踪许多人(比如说100),我的查询可能需要很多时间为每个用户选择100条记录。

问题:如何实现以下机制?有没有比这更好的方法?我正在使用PHP和Mysql

Reasearch:我试着了解facebook和Pinterest是如何处理的,但这似乎太大了,我现在无法了解,因为我不希望马上有那么多用户。我是否需要使用memcache来提高性能并避免重复查询?我是否可以使用与Mysql并行的文档数据库

我想要一个简单但功能强大的实现,如果我的用户群逐渐增长到几千,它将可以扩展


任何帮助或见解都会非常有用。

因为,根据我对该场景的理解,用户可能会跟随许多供应商,而供应商可能有许多追随者,这构成了许多关系,因此在数据库模式中实现这一点的唯一标准化方法应该是使用链接表,正如您所描述的那样


至于性能方面的考虑,我不会太担心它,因为它可以在userId和vendorId上建立索引,查询应该可以

根据我对该场景的理解,一个用户可能跟随多个供应商,而一个供应商可能有多个跟随者,这构成了一种多方面的关系,因此在数据库模式中实现这一点的唯一标准化方法应该是使用链接表,正如您所描述的那样


至于性能方面的考虑,我不会太担心它,因为它可以在userId和vendorId上建立索引,查询应该可以

连接表可能是最好的方法,但仍在很大程度上取决于您的选择

  • 使用替换键id上的键聚集的表可以加快添加新记录的速度

  • 带有键(userId,vendorId)的表clustered将使您查找某个用户跟踪的供应商的查询更快

  • 使用键(vendorId、userId)聚集的表将使查询更快地查找遵循某个供应商的用户

连接表可能是最好的方法,但仍在很大程度上取决于您的选择

  • 使用替换键id上的键聚集的表可以加快添加新记录的速度

  • 带有键(userId,vendorId)的表clustered将使您查找某个用户跟踪的供应商的查询更快

  • 使用键(vendorId、userId)聚集的表将使查询更快地查找遵循某个供应商的用户

您是否想过使用逗号分隔的值来存储供应商名称,如id | userId | vendorId1、vendorId2、vendorId3等on@Sid这到底是如何提高性能的?@user1615903一列包含供应商名称的字符串可能会提高性能。例如,您不会将数据放在不同的页面中,而是放在一个地方。但这将使控制数据完整性变得更加困难,并可能降低性能。这将使搜索观察到供应商的用户几乎不可能。可能不值得这么麻烦,但它可能会起作用。您是否想过使用逗号分隔的值来存储供应商名称,如id | userId | vendorId1、vendorId2、vendorId3等on@Sid这到底是如何提高性能的?@user1615903一列包含供应商名称的字符串可以提高性能,大概例如,您不会将数据放在不同的页面中,而是放在一个地方。但这将使控制数据完整性变得更加困难,并可能降低性能。这将使搜索观察到供应商的用户几乎不可能。可能不值得这么麻烦,但可能会奏效。感谢您的投入。是的,这是一种多对多的关系,我计划采用相同的方法,但我想知道Pinterest、twitter等网站是如何处理它的。可能我以后需要它:P还有其他聪明的算法或方法吗?简单就是聪明;)正如您所描述的,这是最简单的解决方案。Jakub关于聚集索引的建议当然也值得考虑,但除此之外,我不想过度考虑这个问题。是的,这是一个多对多的关系,我计划采用相同的方法,但我想知道Pinterest等网站如何处理它,推特。也许我以后需要它P还有其他聪明的算法或方法吗?简单就是聪明;)正如您所描述的,这是最简单的解决方案。Jakub关于聚集索引的建议当然也值得考虑,但除此之外,我不想过度考虑这个问题