문제

I'm just trying to load 5 random objects in a rails controller

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

Is that the least expensive way to do it?

도움이 되었습니까?

해결책

Short answer: no.

What you have asked the db to do is: go order the entire thing table in a random order... then grab me five of them. If your thing table has a lot of rows... that's a very expensive operation.

A better option (if the ids are auto-increment and thus likely concurrent) is to generate a set of random ids within the id-range for your thing table and go fetch these individual things by those ids.

다른 팁

This is the best way:

Thing.all.sample(5)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top