Mysql 具有列';喜欢的数量';或者有一个单独的专栏。。。?
在我的项目中,我需要*计算特定评论的“喜欢的数量*” 目前我的评论表的结构如下:Mysql 具有列';喜欢的数量';或者有一个单独的专栏。。。?,mysql,select,join,normalization,Mysql,Select,Join,Normalization,在我的项目中,我需要*计算特定评论的“喜欢的数量*” 目前我的评论表的结构如下: 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
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
以上是样本数据
问题:
在我的实时服务器上,大约有5万条记录。我通过将上面两个表连接起来,计算出一个特定的评论所喜欢的*numberofu。
我想知道这样行吗
或者我应该在comment_tbl表中增加一个字段,记录喜欢的数量,每次喜欢时增加1,并将其插入comment_likes_tbl
这对我有帮助吗
提前感谢。…是的,您应该在
注释tbl
表中再添加一个字段喜欢的数量
。这将减少不必要的表连接
这样你就不需要加入,直到你需要得到谁喜欢的评论
这里可以看到的一个很好的例子是StackOverflow本身的数据库设计。
用户
表他们在用户
表中有一个字段声誉
。不要每次使用这个查询时都加入并计算用户的声誉。使用查询-因为它们是外键,列将被索引,查询将很快。是的,您的体系结构是很好的,我暂时会坚持
运行太多的联接可能会影响性能,但只要您不必面对此类问题,就不应该在意
即使您会遇到性能问题,您也应该首先
- 检查是否使用(外键),以便MySQL可以非常快速地查找数据
- 利用MySQL查询缓存
- 使用第二个缓存层,比如memcached来存储likes的值(因为这只是一个增量值)
使用memcache可以解决运行过多联接的问题,并避免创建不必要的列。您可以采取一些不同的方法来实现这一点