Mysql 用于存储用户的Facebook喜好的数据库设计

Mysql 用于存储用户的Facebook喜好的数据库设计,mysql,sql,facebook,Mysql,Sql,Facebook,我获取当前用户的所有喜好,并将它们存储到一个表中(user\u id,liked\u id)。问题是,当我再次得到所有的喜欢,如果有变化,我只想插入新的喜欢。既然许多用户都有很多喜好,我如何才能有效地做到这一点呢?将(user\u id,liked\u id)作为表的聚集主键。使用索引的填充因子为新的索引对腾出空间,并确保update子句可以有效地使用聚集索引(即,始终在where子句中包含用户id)。将(用户id,类似id)作为表的聚集主键。使用索引的填充因子为新的索引对腾出空间,并确保upd

我获取当前用户的所有喜好,并将它们存储到一个表中(user\u id,liked\u id)。问题是,当我再次得到所有的喜欢,如果有变化,我只想插入新的喜欢。既然许多用户都有很多喜好,我如何才能有效地做到这一点呢?

将(user\u id,liked\u id)作为表的聚集主键。使用索引的填充因子为新的索引对腾出空间,并确保update子句可以有效地使用聚集索引(即,始终在where子句中包含用户id)。

将(用户id,类似id)作为表的聚集主键。使用索引的填充因子为新的索引对腾出空间,并确保update子句可以有效地使用聚集索引(即,始终在where子句中包含用户id)。

是的,您可以将复合/组合主键或将这两个字段的组合设置为唯一。
因此,由于密钥错误,它不会添加已经存在的数据。因此只会插入新数据。

是的,您可以将复合/组合主键或将这两个字段的组合设置为唯一。
因此,由于键错误,它不会添加已经存在的数据。因此只会插入新数据。

您使用的是哪种数据库服务器(品牌和版本)?请重新标记您的问题以获得更准确的答案。您使用的是哪种数据库服务器(品牌和版本)?请适当地重新标记您的问题,以获得更准确的答案。这将导致整个语句回滚,同时丢失合法数据。这将导致整个语句回滚,同时丢失合法数据。谢谢,但是如果我想查找喜欢的用户id,它会运行得很慢吗?如果您在开始时进行查找,它将能够使用索引,例如
其中用户id喜欢“abc%”
。如果您在字符串中的任何位置查找它,例如,
用户id如“%abc%”
,您将需要一个缓慢的完整表扫描。谢谢,但是如果我想查找喜欢的用户id,它是否工作缓慢?如果您在开始时进行查找,它将能够使用索引,例如,
其中用户id像“abc%”
。如果要在字符串中的任何位置查找它,例如,
用户id如“%abc%”的位置
,则需要缓慢的完整表扫描。