01 · DATA MODELINGP011 MIN
分页、筛选与排序
设计稳定、可索引、不会漏项或重复的列表查询契约。
MENTAL MODELQUERY WINDOWS
01过滤 tenant
→02应用条件
→03稳定排序
→04limit + 1
→05返回 nextCursor
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
Offset Pagination
用 offset/limit 跳过前 N 行,适合小数据与随机跳页。
Cursor Pagination
从上次最后一条稳定排序键继续读取,适合大数据和连续滚动。
Filtering / Sorting
把允许的字段、操作符和排序方向定义为白名单,并让索引匹配常用组合。
订单列表翻页出现重复项
列表只按 created_at 排序,同一毫秒创建多笔订单,第二页重复第一页面末数据。
- 01
改为 created_at DESC, id DESC。
- 02
游标同时编码两个值。
- 03
下一页使用严格小于组合条件。
并列时间也有全序,翻页稳定可复现。
马上动手
- 为库存流水定义游标字段。
- 写出允许过滤字段的白名单。
常见坑
- 无排序就分页
- 游标只用非唯一时间
- 返回无限 pageSize
05 · KNOWLEDGE CHECK什么时候 offset 分页仍是合理选择?查看答案⌄
答案
数据量有限、用户需要直接跳到第 N 页且查询成本可控时;后台表格不必为了“先进”强行使用游标。