背景:Railsの3.2 - クエリパフォーマンス(Postgresの)
私はプロジェクトとしてダッシュボードを作成していると私は、私は大きなパフォーマンスの問題になるだろうと思うのクエリがあります。
<% for outlet in @outlets %>
<% if Monitoring.where(:outlet_id => outlet.id).where('date(created_at) = ?', Date.today).exists? %>
<li>
<a class="done" href="<%= outlet_url(outlet) %>" rel="tooltip" title="<%= outlet.name %>"></a>
</li>
<% else %>
<li>
<a href="<%= outlet_url(outlet) %>" rel="tooltip" title="<%= outlet.name %>"></a>
</li>
<% end %>
<% end %>
を
私が達成しようとしているのは、ページ上の一連の点です。アンカータグのクラスがdoneの場合、緑で表示され、そうでない場合は赤で表示されます(CSSで行われます)。
ここで明らかになったDRYの問題とは別に、このクエリは非常に重いので、改善する方法を検討しています。
アウトレットは少なくとも1日1回監視されます(アウトレットhas_many:モニタ)。各コンセントについて、その特定の日に監視されているかどうかを確認し、それに応じてHTMLを出力する必要があります。
誰かが私にこれを助けることができたら、それは素晴らしいでしょう。 (これをキャッシュするためのアドバイスもあります)
前もって乾杯。
これは実際には高価なクエリではないので、実際の問題を実証するまでキャッシングを心配しないでください。 – dbenhur
私はこのソリューションが最も好きです。キャッシングに関しては、これは間違いなく必要だと思います。同じページに最大2000の店舗があり、5分ごとに爽やかです。これをキャッシュする最良の方法として何をお勧めしますか? – Ammar
1つの外部結合で2000行をフェッチするのは高価な操作ではありません。まずそれを実装してから測定します。私はあなたがそれを必要としないので、キャッシュを推薦するつもりはありません。 – dbenhur