0

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

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

这是最便宜的方法吗?

4

2 回答 2

1

简短的回答:没有。

您要求数据库做的是:以随机顺序对整个事物表进行排序......然后抓住我其中的五个。如果您的事物表有很多行......这是一个非常昂贵的操作。

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

于 2013-09-25T02:30:34.120 回答
0

这是最好的方法:

Thing.all.sample(5)
于 2013-09-25T02:42:53.130 回答