以以下格式存储 like count 是个好主意吗?
像表:
u_id | post_id | user_id
Run Code Online (Sandbox Code Playgroud)
还有count(u_id)一个帖子?
如果每个帖子都有数千个赞怎么办?几个月后,like 表将填满数十亿行。
还有什么其他有效的方法可以做到这一点?
Ale*_*lex 11
两个字的答案是:是的,没关系。(像任何用户为任何帖子所做的那样存储有关每个人的数据)。
但我只想将其分离或转换为几个问题:
问:还有其他方法count(u_id)吗?甚至更好:
SELECT COUNT(u_id) FROM likes WHERE post_id = ?
Run Code Online (Sandbox Code Playgroud)
答:为什么不呢?您可以在post表格中保存计数,并在每次用户喜欢/不喜欢帖子时增加/减少它。您可以设置触发器(存储过程)来自动执行此操作。然后要获得计数器,您只需要:
SELECT counter FROM posts WHERE post_id = ?
Run Code Online (Sandbox Code Playgroud)
如果您喜欢之前的问答并认为这是个好主意,我有下一个问题:
Q. 那我们为什么需要likes桌子呢?
答:这取决于您的应用程序设计和要求。根据您发布的列集:(u_id, post_id, user_id我什至会添加另一列timestamp)。您的要求是存储有关用户以及喜欢的帖子的信息。这意味着您可以识别用户是否已经喜欢这篇文章并拒绝多次点赞。如果您不关心多重喜欢或历史时间线和统计数据,您可以删除您的likes表格。
我在这里看到的最后一个问题:
问:几个月后,like 表将填满数十亿行。 不是吗?
答:我祝你成功,但恕我直言,你错了 99%。以获得您所需要1000个活跃用户(这是个人的启动非常非常好号码(您正在构建整个应用程序没有建筑师或设计师参与?)),只是1M记录EVERY这些用户想EVERY的1000个职位,如果您有任何. 我的观点是:幸运的是,您有足够的时间,直到您的数据库变得非常大,这会损害您的应用程序。直到您的表获得 10-20M 的记录,您才可以不必担心大小和性能。
| 归档时间: |
|
| 查看次数: |
1516 次 |
| 最近记录: |