本人菜鸟一个请教各位几个问题(先行谢过):
如何自动计算某个字段的值?比如有一个评论表和文章表,文章表中有一个字段是评论数,当有新评论时这个评论数怎么更新?(每次有评论就去给评论数加1吗?这样成本似乎比较大?)是不是我的表结构有问题?
我用了orm每次从数据库拿到的是一个对象,我想用article.comment_count的方式读取到评论数。
谢谢!

本人菜鸟一个请教各位几个问题(先行谢过):
如何自动计算某个字段的值?比如有一个评论表和文章表,文章表中有一个字段是评论数,当有新评论时这个评论数怎么更新?(每次有评论就去给评论数加1吗?这样成本似乎比较大?)是不是我的表结构有问题?
我用了orm每次从数据库拿到的是一个对象,我想用article.comment_count的方式读取到评论数。
谢谢!
1 immjun Aug 2, 2015 redies 然后定时任务? |
3 omengye Aug 2, 2015 评论表里的评论id跟文章id多对一就行呀, 获取评论数的时候就count一下评论id就行 |
4 wkdhf233 Aug 2, 2015 评论数这种东西用到的时候count就行,不用单独弄个值来存。。 |
5 zhangwei1996 Aug 2, 2015 竟然用文章表的一个字段存评论数? |
6 hahasong Aug 2, 2015 用一个字段存评论数没问题,冗余起来,比每次 count效率高多了。唯一要小心的是新增和删除评论的时候要注意相应加减。你现在的结构,确实是有新评论就 +1 |
7 mikan Aug 2, 2015 取count,不要把整个对象拿出来 |
10 shakoon Aug 3, 2015 同意6楼 |
12 Pylonight Aug 3, 2015 用触发器咯?交给数据库系统去做,就不用管锁不锁了。insert到评论表的时候触发这个触发器,触发器功能是更新所述文章的评论数;删除评论同样要一个触发器。 |
13 xinyewdz Aug 3, 2015 每次新评论+1,是比较好的方法。一篇文章的评论数是不会太多的,总体来说是写少读多。 |
14 lichao Aug 3, 2015 看场景。如果要显示一批文章列表,同时要求显示评论数,你用 article.comment_count 取的话,就会产生类似 N+1 的问题,所以 article 表中最好冗余这个 comment_count 的字段 |
16 jhdxr Aug 3, 2015 14L +1,如果在文章列表要显示难道还用count + group by?我觉得第一思路就是加个冗余字段啊。。。居然那么多人觉得应该要count好意外 |
17 kikyous Aug 3, 2015 用一个值来存储评论数量,在rails中叫counter_cache |
18 invite Aug 3, 2015 这个设计,相当巧妙。 |