请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师一个课外问题

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

正在回答

2回答

Qiujuer 2019-04-03 21:14:14

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

其实是这样的:

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

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


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


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


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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕用1394343 #1
    按评论表时间排序,  如果评论超多,就可以通过索引和时间 来解决全表扫描是吗?      查询出来后,过滤掉同一个外键是为了什么?  优化吗
    回复 有任何疑惑可以回复我~ 2019-04-03 23:53:24
  • 提问者 慕用1394343 #2
    感谢老师  我一直都是在想每次都全表查询效率低,不知道索引还有什么的可以用来杜绝
    回复 有任何疑惑可以回复我~ 2019-04-03 23:59:05
  • Qiujuer 回复 提问者 慕用1394343 #3
    这个应该是我表述不清晰,简单来说就是一个帖子有很多评论。我们通过评论反查的时候可能查询到:评论1评论2评论3
    
    其中1,3都是一个帖子那就会出现。
    
    帖子1,帖子2,帖子1
    
    重复的情况,这种在联表查询的时候可以直接解决掉的。
    
    另外时间排序,索引,缓存都可以避免数据库的压力。其中缓存可以非常有效缓解查询压力。
    回复 有任何疑惑可以回复我~ 2019-04-04 00:09:31
提问者 慕用1394343 2019-04-03 19:07:14

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信