代码之家  ›  专栏  ›  技术社区  ›  Dante

在使用id和timestamp的游标分页中,我们是否需要id和timestamp来获得下一个页面?

  •  0
  • Dante  · 技术社区  · 2 年前

    我在关注 this answer 对表格进行分页。正如标题所说,是否需要同时提供id和时间戳才能获得下一页?我在想这样的事情:

    select * from my_table where 
    (date_created, id) < 
    ((select date_created from my_table where id = 1234), 1234)
    order by date_created, id desc limit 10
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Erwin Brandstetter    2 年前

    如果 id 是主键,则不需要记住时间戳, 逻辑上 。(第二列在功能上取决于 身份证件 -搁置并发写入的角落案例。)但除了 对的 ,分页也需要 快速的 显然,记住时间戳比再次查找要快得多,这几乎会使成本翻倍。

    此外,使用唯一ID作为决胜局只是一种特殊情况。键集分页的一般情况适用于组合键,其中只有两列或多列的组合是唯一的。那么,记住所有这些是一种纯粹的逻辑必要性。看见

    顺便说一句,“游标分页”可能不是这里最好的关键词。没有任何“游标”的明显参与。查询的关键功能是用于建立分页的确定排序顺序的一组键。“键集分页”或“行值比较”将是更合适的术语/关键字。