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