在mysql数据库中存储“likes”或“upvotes”的最佳方法是什么?
以下是我的想法:
likes (table)
id (auto increment)
post_id
user_id
但是likes
表会有数百万甚至数十亿行,因为每个想要帖子的人都会插入1行,每个人可能会喜欢不止一次,并且有多个用户。
facebook或stackoverflow如何设法在数据库中执行此操作?任何链接或指南表示赞赏。感谢。
答案 0 :(得分:3)
你不需要一个专栏来进行上下投票吗?
摆脱身份;相反,请使用PRIMARY KEY(post_id, user_id)
。
首先使用post_id
,您可以有效地找到给定帖子的所有投票。同时,user_id的所有投票列表效率较低。如果您需要,那么也有INDEX(user_id)
答案 1 :(得分:-1)
以逗号分隔的用户ID存储字符串(或json)。 不需要额外的表,只需将其作为列添加到Post。 额外的列可以用于喜欢的总数(计数)。