필드의 값이 status
인 임의의 레코드를 2
으로 가져와야합니다. ORDER BY RAND()
가 큰 테이블에 잔인하게 느린 될 수 있음을레일은 특정 값을 가진 임의의 레코드를 얻습니다.
Model.where(:status => 2).order('RAND()').first
참고하지만, 작은 것들에 대한 괜찮아 :
필드의 값이 status
인 임의의 레코드를 2
으로 가져와야합니다. ORDER BY RAND()
가 큰 테이블에 잔인하게 느린 될 수 있음을레일은 특정 값을 가진 임의의 레코드를 얻습니다.
Model.where(:status => 2).order('RAND()').first
참고하지만, 작은 것들에 대한 괜찮아 :
이 더 빠를 수 있습니다
Model.where(status: 2).offset(rand(Model.where(status: 2).count)).first
MySQL에서'OFFSET'은 또한 느리게 악명이 높으며 때로는'COUNT (*)'에 나이를 먹을 수 있습니다. – tadman