如何更好处理 查询的是父级的内容,但是又要获取多个或者全部的子级内容
先上表结构:
然后说一下业务的需求:
分页获取评论,每次获取父级评论 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 去做处理
这是我目前的解决思路,我想请教一下您们,有什么更好的解决方式吗
推荐文章: