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

  • Official Android Tips

    Official And

    23 EYLÜL 2009
  • midomansour

    midomansour

    19 EYLÜL 2009
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007