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

  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011