Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我只是想在 Rails 控制器中加载 5 个随机对象
Thing.all(:limit => 5, :order => "RANDOM()")
这是最便宜的方法吗?
简短的回答:没有。
您要求数据库做的是:以随机顺序对整个事物表进行排序......然后抓住我其中的五个。如果您的事物表有很多行......这是一个非常昂贵的操作。
更好的选择(如果 id 是自动递增的,因此可能是并发的)是在 id 范围内为您的事物表生成一组随机 id,并通过这些 id 获取这些单独的事物。
这是最好的方法:
Thing.all.sample(5)