ページの読み込みごとに、これらのリクエストがいくつかあります。
SELECT COUNT(*) FROM `impressions` WHERE `impressions`.`impressionable_id` IN (229) AND `impressions`.`impressionable_type` = 'Document' AND (YEAR(created_at) = 2013 && MONTH(created_at) = 8 && DAY(created_at) = 12)
SELECT COUNT(*) FROM `impressions` WHERE `impressions`.`impressionable_id` IN (229) AND `impressions`.`impressionable_type` = 'Document' AND (YEAR(created_at) = 2013 && MONTH(created_at) = 8 && DAY(created_at) = 13)
SELECT COUNT(*) FROM `impressions` WHERE `impressions`.`impressionable_id` IN (229) AND `impressions`.`impressionable_type` = 'Document' AND (YEAR(created_at) = 2013 && MONTH(created_at) = 8 && DAY(created_at) = 14)
SELECT COUNT(*) FROM `impressions` WHERE `impressions`.`impressionable_id` IN (229) AND `impressions`.`impressionable_type` = 'Document' AND (YEAR(created_at) = 2013 && MONTH(created_at) = 8 && DAY(created_at) = 15)
サーバーの負荷を減らしたいので解決策に変えようとしていcounter_cache
ます。私が数えようとしている複雑な関係のために、それを設計するのに少し助けが必要です. カウントを取得するクエリは次のとおりです。
Impression.where(:impressionable_id => component.publications.where(:document_id => document).first.id).count
counter_cache
柱はどこに置けばいいですか?また、移行をどのように記述すればよいですか? Component
とを通じて関係にDocument
あります。has_many
Publications