问答 / 1 / 7 / 创建于 4年前 / 更新于 4年前
升级一下话题:你们会把用户昵称一起存储了,还是关联查询
想了两种方案:
在文章表里增加三个数量字段,每次被点赞(取消点赞)/评论(删除评论)/浏览,都去更新这个字段,但是每次都要更新这些字段,效率是不是太低了,字段算不算冗余了
每次查询都关联查询统计,如果是一篇文章忍了,但是列表查询文章的数和评论书,这也太耗性能了吧
天外有天,不知道大厂是怎么处理找个问题的!
分表比较好,可以记录额外内容,例如评论内容,评论人,点赞人等,列表查询直接withCount并不耗性能,只有两次查询而已,自己注意N+1问题就行
withCount
如果只显示数量,直接写在一个表里没啥问题
但实际情况应该还需要记录其他信息吧 比如评论内容、点赞人
@24K大白羊 有评论表,只是纠结找个统计,是在文章表记录,还是每次查询都统计
我会选一方案,代码控制下点赞数、评论数的同步就可以了
另外,点赞你得有记录吧,评论表是不是也可以有点赞数
最后,用缓存啊,再定时将缓存数据同步到数据库不就好了
加多个冗余字段,比如评论数,不需要每次都去计算的,默认开始为0,然后用户评论的时候,评论表加多一条数据后,再自增冗余字段,评论数
方案一没毛病的。赞。 适当的冗余、适当的反范式,提升查询效率。
使用方案1,操作太频繁的话可以加个缓存,定时把缓存更新进数据库
我要举报该,理由是:
分表比较好,可以记录额外内容,例如评论内容,评论人,点赞人等,列表查询直接
withCount
并不耗性能,只有两次查询而已,自己注意N+1问题就行