Ruby on rails 如何随机化(和分页)大量结果?
我正在创建一个竞赛应用程序,它要求参赛作品的主索引页随机化。因为它可能是一个大的条目集(可能多达5000个),所以我还需要对它们进行分页 以下是挑战:Ruby on rails 如何随机化(和分页)大量结果?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在创建一个竞赛应用程序,它要求参赛作品的主索引页随机化。因为它可能是一个大的条目集(可能多达5000个),所以我还需要对它们进行分页 以下是挑战: 我曾读到,在大型集合上使用数据库的“random()”函数可能会执行得很差 我想事情不会被重新随机分页链接时被点击。换句话说,它应该在第一次加载时返回一个随机集,然后在有人使用分页时保持相同的顺序 第二个挑战似乎不现实,但也许有一些解决方案 感谢您的输入。我只需要使用随机数生成器来选择ID,并将种子存储在会话中,以便用户在分页时看到相同的顺序。我
感谢您的输入。我只需要使用随机数生成器来选择ID,并将种子存储在会话中,以便用户在分页时看到相同的顺序。我可能还会使用散列来确保每个ID只拾取一次 我只需要使用随机数生成器来选择ID,并将种子存储在会话中,以便用户在分页时看到相同的顺序。我可能还会使用散列来确保每个ID只拾取一次 我建议的一种简单方法是使用SQL查询编写您自己的随机函数,因为函数越复杂,随机性越强,例如: 你已经知道了
order by rand()limit 0,10从表格中选择*
假设您的_表有一个主键“id”,现在将“rand()”替换为“MOD(id,13)”
按MOD(id,13)限制0,10从您的表格订单中选择*
如果您的_表有datetime列,则结果会更好,请尝试以下查询:
按MOD(id,13)从您的表格中选择*,以0,10为上限进行更新
另外,如果你认为它不够随机,我敢打赌你一定喜欢它:
select*from your_table order by MD5(id)limit 0,10
我建议的一种简单方法是使用SQL查询编写自己的随机函数,因为函数越复杂,随机性越强,例如:
你已经知道了
order by rand()limit 0,10从表格中选择*
假设您的_表有一个主键“id”,现在将“rand()”替换为“MOD(id,13)”
按MOD(id,13)限制0,10从您的表格订单中选择*
如果您的_表有datetime列,则结果会更好,请尝试以下查询:
按MOD(id,13)从您的表格中选择*,以0,10为上限进行更新
另外,如果你认为它不够随机,我敢打赌你一定喜欢它:
按MD5(id)限制从您的_表中选择*0,10
+!我喜欢MD5。接下来的问题是,其他数据库是否支持MD5?例如sqlite、pqsql等。谢谢!我喜欢MD5。接下来的问题是,其他数据库是否支持MD5?如sqlite、pqsql等,谢谢!