我知道这个问题已经回答了很多次。 事实上,如果你参考http://www.percona.com/files/presentations/ppc2009/PPC2009_mysql_pagination.pdf 你会得到答案。MySQL中高效而有效的分页
但是,我对这种常见方法有疑问,如下所示。
如果你是指滑动18,考虑事件的顺序如下:
- 客户端获取“第一页”
- 与ID = 19存在于“第三页”后,其thumb_up计数增加至98,从而将其推到“第一页”
- 客户端获取“第二页面”
然后,客户端将错过交ID = 19。我正在做一个移动应用程序,其中的项目缓存在客户端(想象一个无限的滚动列表)。如果缓存没有定期更新,那么这个帖子将会被错过一段时间!
确保客户端永远不会错过任何项目的任何智能方式,尤其是在客户端正在获取可能由其他用户同时更新的项目的情况下?
我想为表中的每个项目强加一个唯一的“更新时间戳”作为解决方案。但是,这需要某种形式的序列化来保持时间戳的唯一性,并且对于大量更新来说效果不佳。我们还需要确保时间戳是单调递增的,否则项目可能会错过。
eBay有这个问题,如果你按“结束最快”排序 - 在你浏览即将结束的时间,并移动下一页时,可能已经创建了一个间隙。 – 2014-11-25 12:42:09