我只是想在 rails 控制器中加载 5 个随机对象
Thing.all(:limit => 5, :order => "RANDOM()")
这是最便宜的方法吗?
简短回答:不。
你要求数据库做的是:以随机顺序对整个事物表进行排序......然后给我抓五个。如果你的事物表有很多行...这是一项非常昂贵的操作。
一个更好的选择(如果 id 是自动递增的,因此可能是并发的)是在事物表的 id 范围内生成一组随机 ID,然后通过这些 id 获取这些单独的事物。
这是最好的方法:
Thing.all.sample(5)