【发布时间】:2011-06-04 08:48:20
【问题描述】:
假设我有一个包含一堆记录的表,我想随机呈现给用户。我还希望用户能够来回分页,所以我必须保持某种顺序,至少在一段时间内。
该应用程序基本上只有 AJAX,它对已经访问过的页面使用缓存,所以即使我总是提供随机结果,当用户尝试返回时,他会得到上一个页面,因为它将从本地缓存加载.
问题是,如果我只返回随机结果,可能会有一些重复。每个页面包含 6 个结果,因此为了防止这种情况,我必须执行类似 WHERE id NOT IN (1,2,3,4 ...) 之类的操作,我将在其中放置所有以前加载的 ID。
该解决方案的巨大缺点是无法在服务器端缓存任何内容,因为每个用户都会请求不同的数据。
另一种解决方案可能是创建另一列来对记录进行排序,并随机播放每个在此处插入时间单位。这里的问题是,我需要为表中的每条记录设置一个序列中的随机数,这将需要与记录一样多的查询。
如果有任何相关性,我正在使用 Rails 和 MySQL。
【问题讨论】:
-
作为用户对随机数据进行分页对我来说没有多大意义。如果您将其称为“另外 6 个随机帖子!”并且只是忍受可能的重复,这似乎主要是你所要求的零额外努力。
-
那么对答案的回应如何?我很想知道建议的任何解决方案是否适合您。
标签: mysql ruby-on-rails database random