昨天我去了聊天服务添加分页。在使用page / per_page或start / end参数之前,我已经实现了100次分页,而且我一直都知道,页面加载之间的顺序或偏移量可能会发生变化,但是在这种情况下服务,那就更有可能发生。我的第一种方法是使用updated_at列,并让后续请求仅传递“ updated_after”之类的内容,但是在这种情况下,我们经常一次导入多个房间,而对于同一个用户而言,它们很容易拥有相同的updated_at(低至毫秒)。
我发现的一个解决方案是使用更新计数或索引,每次更新一行时索引都会递增(表宽)。我使用postgres SEQUENCE列来实现它,每次更新房间时,我都会将其设置为nextval('room_update_count')
(这可能是触发器,但我想获得更多控制权)。然后,我可以对该列进行排序,并使用简单的update_index < $next
来获取下一页。
但是,我无法找到对这种技术的任何引用。它似乎工作得很好,但我对它没有出现任何问题表示怀疑。我觉得我不能成为第一个提出这个想法的人,如果我能想到正确的名字,我会找到它的其他示例。
这是已知技术吗?还有什么其他方法可以解决分页偏移问题?