Drizzle | SQL 基于游标的分页
This guide assumes familiarity with:
本指南演示如何在 Drizzle 中实现 基于游标
的分页:
如果需要动态排序,可以像下面这样做:
这种分页的主要思想是使用游标作为数据集中某一行的指针,表示上一页的结束。为了确保正确的排序和游标比较,游标应该是唯一的且是顺序的。
如果需要按非唯一且非顺序的列排序,可以使用多个列作为游标。以下是如何做的:
确保为用于游标的列创建索引,以提高查询效率。
如果您使用的是非顺序的主键(例如 UUIDv4
),您应该添加一个顺序列(例如 created_at
列)并使用多个游标。
以下是如何做的:
Drizzle 具有有用的关系查询 API,使您可以轻松实现 基于游标
的分页:
基于游标的 分页的 优点:一致的查询结果,没有因插入或删除操作导致的跳过或重复的行,并且相比于 limit/offset
分页效率更高,因为它不需要扫描和跳过先前的行来访问下一页。
基于游标的 分页的 缺点:无法直接导航到特定页面,且实现复杂。由于您将更多列添加到排序顺序中,则需要在 where
子句中添加更多过滤器以进行游标比较,以确保分页的一致性。
因此,如果您需要直接导航到特定页面或需要更简单的分页实现,您应该考虑使用 offset/limit 分页。