检索 x 个随机对象



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

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

这是最便宜的方法吗?

简短回答:不。

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

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

这是最好的方法:

Thing.all.sample(5)

最新更新