如何更好处理 查询的是父级的内容,但是又要获取多个或者全部的子级内容
先上表结构:
然后说一下业务的需求:
分页获取评论,每次获取父级评论25条,并且获取子评论 所有 (目前是所有,但是产品说会改为只获取5条)
目前是两个逻辑去处理这个需求 (可能是我知识学得不够深,目前想到比较好的就这两种,勿喷)
第一种:
1 : 通过comments表查出的comment_id和对应的内容
2 : 根据array_column提取出comment_id
3 : 去comments_families里根据主键查询对应的children_count (这里存储了所有该父级评论下的子评论id)
4 : 根据需求拿取对应数量的子评论id
5 : array_merge 合并 子评论的comment_id
6 : 再去主表里查出子评论内容
优点: 查询的方式都是通过主键,速度是最快的
缺点:虽然可以做到对子评论的预期控制,但是如果碰到children_list内的内容过多(子评论过大) ,一样获取出来会很麻烦
第二种:
1 : 通过comments表查出的comment_id和对应的内容
2 : 根据array_column提取出comment_id
3 : 将comment_id带入到top_comment_id中,就直接查询出所有的子评论
优点:用了两次查询,第一次是主键,第二次是普通的索引 , 比第一种的方案减少了一次查询
并且可以不用多创建一张表
缺点:无法预期父级评论下有多少子评论,如果获取全部的子评论,可能会出现查询上的问题,如果后期产品将提取子评论的数目从全部改为5个或者10个时,需要用到group by去做处理
这是我目前的解决思路,我想请教一下您们,有什么更好的解决方式吗
推荐文章: