请问老师一个课外问题

来源:4-13 图片选择器功能实现-2

慕用1394343

2019-04-01

想问问比如百度贴吧的按时间排序的问题
某吧一个一两年前的帖子, 今天我评论了一下,它就会跑到所有帖子最前面,我想请问怎么处理的呢?
我想 每次评论都会修改对应帖子的 “最后更新时间” 这个字段, 但是不能每次刷新都去把所有帖子都进行排序吧? 如果有很多数据呢 . 所以我想的是把这个帖子添加到某张表里面, 每次刷新都先从这张表里拿数据. 后面我不知道该怎么做了 这张表数据会越来越多, 我想用户拿走表里数据后就删除对应的数据, 但是其它用户就看不到了, 不删除吧数据会越来越多, 那这表也没意义了…

写回答

2回答

Qiujuer

2019-04-03

你的这个问题你自己回复了,我还在未解决中找没找到呢~

其实是这样的:

两个表:主表存放基本的文章信息,评论表存放评论信息

主表仅仅在帖子新建、更改时变更,评论的插入并不引起主表变更;但是主表与评论表之间有外键连接。


当用户发布评论时肯定是评论表数量增加了,并且有时间。


后续展示的时候是连表查询差,首先按评论表时间顺序排序,并且过滤掉同一个外键(对应主表)的方式就可以得到你说的列表展示的时候帖子跑前面了。


而且只要索引和时间联表查询弄好了,不会引起全表扫描的,也没啥很高的消耗,并且查询一次后可以放入缓存,后续新增评论的时候也可以去更新缓存,所以并不会引起DB数据库扫描的。

0
3
Qiujuer
回复
慕用1394343
这个应该是我表述不清晰,简单来说就是一个帖子有很多评论。我们通过评论反查的时候可能查询到:评论1评论2评论3 其中1,3都是一个帖子那就会出现。 帖子1,帖子2,帖子1 重复的情况,这种在联表查询的时候可以直接解决掉的。 另外时间排序,索引,缓存都可以避免数据库的压力。其中缓存可以非常有效缓解查询压力。
2019-04-04
共3条回复

慕用1394343

提问者

2019-04-03

额 老师 这个问题不用回答了  我感觉我想多了     我在一张帖子表里放了100条数据, 然后查询时 设置时间降序, 然后设置查询返回5条(.setMaxResults(5)), 发现 查询的时候是把所有数据都查询了,找出5条时间最大的, 然后才返回来 , (我以前以为随机抽5条然后排序才反回来)     想问老师,如果数据很多很多,这样会对效率影响大吗

0
0

手把手开发完整的即时通讯App 客户端+服务端+MVP架构

客户端+服务端+MVP架构+封装思想+主流框架

1749 学习 · 872 问题

查看课程