分页查询方案总结

一. 多数据源分页查询断页方案

1. 背景

当分页查询条件condition涉及多个数据源时, 可能会导致断页/数据少于pageSize等现象

比如查询主数据源得到pageSize条数据, 再根据其他条件再过滤后, 少于pageSize条数据或没有数据, 但下一页可能还有数据


2. 方案1

  • 方案特征
  1. 入参查询条件condition是针对多数据源的
  2. 入参包括:condition,pageNo,pageSize(可后端固定,也可前端传)
  3. 返回包括:dataList,hasMore,pageNo
  4. 返回的数据dataList除了最后一页都会>=pageSize
  5. 连续两次查询可能会跳页(解决方案: 前端不显示pageNo,只显示下一页)
  6. totalSize是未知的

流程图如下:

在这里插入图片描述


3. 方案2

和方案1的区别是: 是否需要下一页数据由前端来判断(dataSize是否大于0,或累计的dataSize是否大于0)

设置一个阈值: 如何连续请求阈值的次数后, 还是没有数据. 不再查询

流程图:

在这里插入图片描述


4. 方案3

将多数据源异构为单一数据源

比如写入Hive的一张宽表, 比如写如ES(添加condition所有相关字段)


二. 其他分页场景

1. 根据主键分页

  • 方案特征
  1. 只满足特定场景: 分页查询只有固定的排序方案,且排顺和数据主键自增相同或相反
  2. condition只针对单一数据源
  3. 入参包括:condition,queryId,pageSize(可后端固定,也可前端传)
  4. 返回包括:dataList,queryId(根据dataList是否<pageSize来判断hasMore)
  5. 请求的返回的数据除了最后一页size=pageSize
  6. totalSize是未知的
  7. 首页入参queryId是约定的,最后一页返回queryId也是约定的,其他页入参queryId取上一页最后1条数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>