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

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • Liberator

    Liberator

    14 EYLÜL 2007
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009