Visual LabINTERACTIVE LEARNING
01 · DATA MODELINGP011 MIN

分页、筛选与排序

设计稳定、可索引、不会漏项或重复的列表查询契约。

MENTAL MODELQUERY WINDOWS
01过滤 tenant
02应用条件
03稳定排序
04limit + 1
05返回 nextCursor
分页不是把数组切片,而是在不断变化的数据集合上定义一个稳定的读取窗口。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Offset Pagination

用 offset/limit 跳过前 N 行,适合小数据与随机跳页。

02

Cursor Pagination

从上次最后一条稳定排序键继续读取,适合大数据和连续滚动。

03

Filtering / Sorting

把允许的字段、操作符和排序方向定义为白名单,并让索引匹配常用组合。

02 · BLIND BOTS CASE

订单列表翻页出现重复项

问题现场

列表只按 created_at 排序,同一毫秒创建多笔订单,第二页重复第一页面末数据。

  1. 01

    改为 created_at DESC, id DESC。

  2. 02

    游标同时编码两个值。

  3. 03

    下一页使用严格小于组合条件。

得到什么

并列时间也有全序,翻页稳定可复现。

03 · PRACTICE

马上动手

  1. 为库存流水定义游标字段。
  2. 写出允许过滤字段的白名单。
04 · PITFALLS

常见坑

  • 无排序就分页
  • 游标只用非唯一时间
  • 返回无限 pageSize
05 · KNOWLEDGE CHECK什么时候 offset 分页仍是合理选择?查看答案⌄
答案

数据量有限、用户需要直接跳到第 N 页且查询成本可控时;后台表格不必为了“先进”强行使用游标。