Dante Asked: 2024-05-26 05:11:41 +0800 CST2024-05-26 05:11:41 +0800 CST 2024-05-26 05:11:41 +0800 CST 在使用id和timestamp的游标分页中,我们是否需要id和timestamp来获取下一页?[复制] 772 我正在按照这个答案对表格进行分页。正如标题所说,是否需要同时给出id和timestamp才能获取下一页?我在想这样的事情: 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 sql 1 个回答 Voted Best Answer Erwin Brandstetter 2024-05-26T06:02:23+08:002024-05-26T06:02:23+08:00 如果是主键,那么逻辑上id就不需要记住时间戳。(第二列在功能上依赖于并发写入的极端情况。)但是除了正确之外,分页还需要快速。显然,记住时间戳比再次查找要快得多,这几乎会使成本增加一倍。id 此外,使用唯一 ID 作为决胜局只是一种特殊情况。键集分页的一般情况使用复合键,其中只有两列或更多列的组合是唯一的。那么,记住所有这些就完全是逻辑上的必然了。看: 在大表上使用 OFFSET 优化查询 顺便说一句,“光标分页”可能不是这里最好的关键字。没有任何“光标”的明显参与。查询的关键功能是用于建立确定性分页排序顺序的键集。“键集分页”或“行值比较”将是更合适的术语/关键字。
如果是主键,那么逻辑上
id
就不需要记住时间戳。(第二列在功能上依赖于并发写入的极端情况。)但是除了正确之外,分页还需要快速。显然,记住时间戳比再次查找要快得多,这几乎会使成本增加一倍。id
此外,使用唯一 ID 作为决胜局只是一种特殊情况。键集分页的一般情况使用复合键,其中只有两列或更多列的组合是唯一的。那么,记住所有这些就完全是逻辑上的必然了。看:
顺便说一句,“光标分页”可能不是这里最好的关键字。没有任何“光标”的明显参与。查询的关键功能是用于建立确定性分页排序顺序的键集。“键集分页”或“行值比较”将是更合适的术语/关键字。