在我的项目中,我需要*为特定评论*计算'number_of_likes'。
目前我的 comment_tbl表的结构如下:
id user_id comment_details
1 10 Test1
2 5 Test2
3 7 Test3
4 8 Test4
5 3 Test5
我还有另一个表'comment_likes_tbl',结构如下:
id comment_id user_id
1 1 1
2 2 5
3 2 7
4 1 3
5 3 5
以上是样本数据。
在我的实时服务器上有大约50K的记录。我通过加入以上两个表*来计算* number_of_likes到特定的评论。 我需要知道它可以吗?
或者我应该另一个字段到 comment_tbl 表来记录number_of_likes并在每次喜欢时将其增加1并将其插入 comment_likes_tbl ....?
无论如何,它帮助了我......?
先谢谢.....
答案 0 :(得分:2)
是的,您应该在number_of_likes
表格中再添加一个字段comment_tbl
。它将减少不必要的表连接。
这样你就不需要加入,直到你需要得到谁喜欢评论。
这里可以看到的一个很好的例子是StackOverflow本身的数据库设计。 See Users
表格中包含Reputation
表格的Users
字段。而不是每次使用这个时加入和计算用户的声誉。
答案 1 :(得分:1)
你可以采取一些不同的方法来做这样的事情
(除此之外,您还可以实现缓存解决方案等,以存储附加到注释的类似值的临时记录,MySQL也可以使用有用的缓存技术)
但是你现在正在做的事情绝对没问题,尽管你仍然应该确保正确设置索引,否则你 会更快地注意到性能下降。 (comment_id上的非唯一索引应该足够了)
答案 2 :(得分:0)
使用查询 - 因为它们是外键,列将被编入索引,查询将很快。
答案 3 :(得分:0)
是的,你的架构很好,我会坚持,暂时。
运行太多联接可能是性能方面的问题,但只要您不必面对这些问题,就不应该关注它。
即使你遇到性能问题,你也应该先......,
使用memcache可以解决运行太多连接的问题,并避免创建一个不太必要的列。