【问题标题】:Efficient and effective pagination in MySQLMySQL中高效有效的分页
【发布时间】:2014-11-25 12:35:43
【问题描述】:

我知道这个问题已经回答过很多次了。 其实如果你参考http://www.percona.com/files/presentations/ppc2009/PPC2009_mysql_pagination.pdf 你会得到答案。

但是我对这种常见的方法有如下疑问。

如果您参考幻灯片 18,请考虑以下事件顺序:

  1. 客户端获取“首页”
  2. “第三页”中存在 ID=19 的帖子,其 thumb_up 计数增加到 98,从而将其推到“第一页”
  3. 客户端获取“第二页”

然后客户将错过帖子 ID=19。我正在做一个移动应用程序,其中项目缓存在客户端(想象一个无限滚动列表)。如果缓存不定期更新,那么这篇文章会错过一段时间!

有什么聪明的方法可以确保客户端永远不会错过任何项目,尤其是在客户端正在获取可能由其他用户同时更新的项目的情况下?

我想为表中的每个项目设置一个唯一的“更新时间戳”作为解决方案。但是,这将需要某种形式的序列化来保持时间戳的唯一性,并且对于大量更新而言表现不佳。我们还需要确保时间戳是单调递增的,否则项目也可能会丢失。

【问题讨论】:

标签: mysql pagination


【解决方案1】:

您可以使用浏览器的IndexedDB,或者WebSQL。使用索引数据库并将所有数据转储到那里(可能是异步的),无论您已经发送了哪个请求。

【讨论】:

  • 如果你愿意,我可以分享一个 IndexedDB 的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 2011-01-27
  • 2014-08-02
  • 1970-01-01
相关资源
最近更新 更多