2016-04-01 15 views
0

Bir dolap üreticisi/yükleyicisi için 300'den fazla iş yükleyen bir sayfam var. Tüm aktif işlerini fabrika başına üç, Dallas, Arlington ve Aubrey gibi bir sayfaya yüklüyorum. Her fabrikada 300 ila 400 aktif (planlı, hedefsiz işler) vardır.Rails uygulamasında birden fazla SQL sorgusu düzeltmeye çalışıyorum

Bu nedenle, Dallas sayfasını yüklediğimde, her gün gidip işleri o gün için vereceğim. Sorgular yaklaşık 50 gün boyunca tekrarlanıyor. Bu bilgiyi bir şekilde önbelleğe gönderebilir miyim bilmek istiyorum. İşte

her gün için

partial results pictured

ben başlık için 2 SUM sorguları yapmak ... gibi birkaç gün göründüğüne dair bir resim ve bir başka sorgu göz önüne alındığında gün için, yani işlerini filtrelemek için Burada @jobs.where(calendar_date: '2016-04-06').each do

# ALL jobs (in the controller) 
@jobs = Job.where(active: true, scheduled: true, 
       manufacturing_location: session[:factory]). 
       includes(:installer). 
       order('calendar_date asc') 

# Jobs for one day (in the view 
@jobs.where(calendar_date: day).order(:calendar_order).each do 

# The helper method for the 'daily tabulations' in the header 
    = daily_tabulation(@jobs.where(calendar_date: day)) 

    def daily_tabulation(jobs) 
    total_boxes = jobs.sum :number_of_cabinets 
    complete = jobs.where(complete_in_shop: true).sum :number_of_cabinets 
    to_build = total_boxes - complete 
    "To Build: #{to_build}, Complete: #{complete}, Total Boxes: #{total_boxes}" 
    end 

Bu sayfalar 4 almak hassas sorgularıdır tarayıcıda yüklemek için 7 saniyeye kadar, redis parçası önbellekleme kullanarak bile. Bu 300'den fazla işin her biri, JS olay işleyicilerinin JS zaman çizelgesinin yanı sıra programın etrafındaki sürükle-bırakma işlemlerini almasına izin verir, ancak bu sorguları temizlemeyi ve ikinci veya daha fazla kişiyi tıraş etmeyi umuyorum. Tepki Süresi. Teşekkür ederim. Bu durumda tek koleksiyonu ile çalışıyoruz beri

cevap

1

, bir kez olsun jobs yüklemek ve ardından diziye gibi işleyebilir:

@job_by_day = @jobs.select { |j| j.calendar_date == day } 

Ve yerine AR#order ait Enumerable#sort kullanın.

İlgili konular