SORU
2 Mayıs 2010, Pazar


ActiveRecord rastgele kayıt

ActiveRecord ile bir tablodan rastgele kayıt alma ihtiyacım var. Jamis Buck from 2006 örnek takip ediyorum.

Ancak, aynı zamanda bir Google Arama (bağlantı yeni kullanıcı kısıtlamaları nedeniyle özniteliği yok) başka bir şekilde geldim:

 rand_id = rand(Model.count)
 rand_record = Model.first(:conditions => [ "id >= ?", rand_id])

Burada başkalarının nasıl yaptığını ya da eğer herkes daha verimli olacağını bilen varsa merak ediyorum.

CEVAP
2 Mayıs 2010, Pazar


İdeal bir şekilde en az iki sorgu olmadan bunu yapmak için bulamadım.

Aşağıdaki rasgele bir sayı (geçerli kayıt sayısı) olarak kullanırofset.

offset = rand(Model.count)

# Rails 4
rand_record = Model.offset(offset).first

# Rails 3
rand_record = Model.first(:offset => offset)

Dürüst olmak gerekirse, sadece RAND TARAFINDAN SİPARİŞ kullanıyordum() veya RASTGELE() (veritabanına bağlı olarak). Eğer bir performans sorunu yok değil mi eğer bir performans sorunu var.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brendan van Son

    Brendan van

    5 Aralık 2006
  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007