Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何随机化(和分页)大量结果?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何随机化(和分页)大量结果?

Ruby on rails 如何随机化(和分页)大量结果?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在创建一个竞赛应用程序,它要求参赛作品的主索引页随机化。因为它可能是一个大的条目集(可能多达5000个),所以我还需要对它们进行分页 以下是挑战: 我曾读到,在大型集合上使用数据库的“random()”函数可能会执行得很差 我想事情不会被重新随机分页链接时被点击。换句话说,它应该在第一次加载时返回一个随机集,然后在有人使用分页时保持相同的顺序 第二个挑战似乎不现实,但也许有一些解决方案 感谢您的输入。我只需要使用随机数生成器来选择ID,并将种子存储在会话中,以便用户在分页时看到相同的顺序。我

我正在创建一个竞赛应用程序,它要求参赛作品的主索引页随机化。因为它可能是一个大的条目集(可能多达5000个),所以我还需要对它们进行分页

以下是挑战:

  • 我曾读到,在大型集合上使用数据库的“random()”函数可能会执行得很差
  • 我想事情不会被重新随机分页链接时被点击。换句话说,它应该在第一次加载时返回一个随机集,然后在有人使用分页时保持相同的顺序
  • 第二个挑战似乎不现实,但也许有一些解决方案


    感谢您的输入。

    我只需要使用随机数生成器来选择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等,谢谢!