レールを使ってこのようなクエリを実行することは可能ですか?
SELECT items.*, (select count(*) from ads where item_id = items.id) as adscount WHERE 1
そして、そのようにこのフィールドにアクセスしますか?
@item.adscount
たとえば、各アイテムには100個ほどの広告があります。また、アイテムのインデックスビューで、各アイテムに含まれる広告の数を表示する必要があります。
今のところ、私はすべてのアイテムに対して一意のクエリを作成する方法を見つけただけです。たとえば、次のようになります。
select count(*) from ads where item_id = 1
select count(*) from ads where item_id = 2
select count(*) from ads where item_id = 3
etc
編集:
カウンターキャッシュ列を作成しました。
これにより、パフォーマンスが大幅に向上しました。