【发布时间】:2014-03-17 18:37:21
【问题描述】:
我需要显示一些根据修改后的列排序的记录(顶部的最新活动) (顶部有新编辑或 cmets 的帖子)
应用程序 UI 具有类似“更多”发布按钮的 twitter,用于无限滚动。每个“更多”都会将接下来的 10 条记录添加到 UI。
问题是当任何要显示的记录被修改时分页索引中断
例如
假设我在工作表中有记录 A,B,C,..Z。
我第一次向用户显示记录 A-J 使用
SELECT * FROM Jobs WHERE 1 ORDER BY last_modified DESC LIMIT 0, 10
如果没有记录被修改,则第二次
SELECT * FROM Jobs WHERE 1 ORDER BY last_modified DESC LIMIT 10, 10
将返回K-T
但是,如果在用户点击“更多按钮”之前,有人修改了J 之后的任何记录,
SELECT * FROM Jobs WHERE 1 ORDER BY last_modified DESC LIMIT 10, 10
将返回J-S
此处记录J 重复。我可以通过不在 UI 中插入 J 来隐藏它,但更多按钮将只显示 9 条记录。但是这种机制在更新大量记录时失效,如果修改了10条记录,查询会再次返回A-J。
处理这个分页问题的最佳方法是什么?
如果记录有多次更新,则保留第二个时间戳失败。
查询的服务器缓存?
【问题讨论】:
-
您使用的是哪个数据库?
-
SQL Server,但问题并非特定于任何数据库
标签: mysql sql sql-server postgresql pagination