我想以最好的方式对具有10k +寄存器的User表进行分页。我可以使用offset和limit,但是显然不如我在许多文章中看到的那样。偶然发现了键集和游标分页,尽管该键集可能更适合在API中使用,因为它更易于在API中实现(即使用golang)。问题是密钥集是如何工作的,据我所见,对id(主键)进行了索引,然后用于在整个数据库中进行查询:
select * from users where id > ? order by id limit ?
但是,这似乎仅适用于整数自动增量ID,而我使用UUID(v4)的情况并非如此。 如何实现此键集分页?
答案 0 :(得分:1)
这与UUID相同。假设id
是UUID主键列,则可以编写
SELECT ... FROM ...
WHERE (order_col1, order_col2, id) > (<previous values>)
ORDER BY order_col1, order_col2, id
LIMIT <page size>;
(order_col1, order_col2)
上的索引可以支持此查询。