キャビネット作成者/インストーラ用に300以上のジョブを読み込むページがあります。ダラス、アーリントン、オーブリーの3つがある工場ごとに、1ページにすべてのアクティブジョブをロードします。各工場には、300〜400のアクティブ(スケジュールされた、アンインストールされたジョブ)があります。複数のSQLクエリをRailsアプリケーションで修正しようとしています
Dallasページを読み込むと、毎日やり直して、その日の順にジョブを出力します。照会は約50日間繰り返されます。私は何とかこの情報をキャッシュに送ることができるかどうかを知りたい。
ここ数日のように見えるものの絵は、私は2つのSUMヘッダーのクエリ、およびその特定の日のためのジョブをフィルタするために別のクエリ、すなわちを作る...毎日の
です、ここで @jobs.where(calendar_date: '2016-04-06').each do
は、これらのページは4を取る正確なクエリ
# 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
ですredis fragment cacheを使用していても、ブラウザにロードする時間は7秒です。これらの300以上のジョブはJSイベントハンドラを使用してスケジュール上のジョブやJSツールチップをドラッグアンドドロップできますが、これらのクリーンアップを行い、反応時間。ありがとうございました。