检索x个随机对象

时间:2013-09-25 02:14:38

标签: ruby-on-rails rails-postgresql

我只是想在rails控制器中加载5个随机对象

Thing.all(:limit => 5, :order => "RANDOM()")

这是最便宜的方式吗?

2 个答案:

答案 0 :(得分:1)

简答:不。

你要求db做的是:按随机顺序对整个事物表进行排序......然后抓住其中的五个。如果你的东西表有很多行...这是一个非常昂贵的操作。

一个更好的选择(如果id是自动递增的,因此可能是并发的)是在你的事物表的id范围内生成一组随机id,然后通过这些id获取这些单独的东西。

答案 1 :(得分:0)

这是最好的方式:

Thing.all.sample(5)