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

  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • Ludique

    Ludique

    21 NİSAN 2009
  • Study with Substance P

    Study with S

    31 Mayıs 2008