1

Raw_dealsテーブルに30,000レコードあり、raw_citiesテーブルには30レコードあり、各取引は5-8都市にリンクしています。ruby​​ on ruby​​でクエリを最適化するのに助けが必要

ここでは、特定の都市でランダムな取引を取りたいと思っています。これらの都市の

一覧は次のように取り出すことができます。

@raw_cities = RawCity.where('disabled = ?', 0).map(&:id) 

今私は契約を必要とします。私はクエリを書いたが、あまりにも時間がかかる。

@raw_deal = RawDeal.order("RAND()").find(:first,:joins=>[:raw_cities], :conditions=>["raw_cities.id IN (?)",@raw_cities]) 
+0

はこのような何かを試してみてください。 –

答えて

3

order("RAND()")があなたのクエリを遅くしているものはおそらくあり、そしてあなたはただ1つの取引を探していることから、あなたはランダムな順序をシミュレートするlimitoffsetの組み合わせを使用することができます。あなたはrandam日付範囲の間でランダムに試みるかもしれないが、あなたは常に成長しているテーブル内のランダムなアルゴリズムを適用したい場合は、常にパフォーマンスに問題があります

@raw_deal = RawDeal.offset(rand(RawDeal.count)). 
        joins(:raw_cities). 
        where(raw_cities: @raw_cities). 
        first 
+0

ありがとうございました.. –

関連する問題