0

私の目標は、特定のコレクションのモデルオブジェクトごとに投票をエクスポートすることです。この例では.allを使用しますが、実際には、大きなセットを生成する.whereになります。私が懸念している次のクエリがあります。

Model.all.each{|x|puts x.votes.count}.explain

   (0.4ms)  SELECT COUNT(*) FROM `votes` WHERE `votes`.`entry_id` = 1
0
   (0.3ms)  SELECT COUNT(*) FROM `votes` WHERE `votes`.`entry_id` = 2
0
   (0.4ms)  SELECT COUNT(*) FROM `votes` WHERE `votes`.`entry_id` = 3
1
   (0.3ms)  SELECT COUNT(*) FROM `votes` WHERE `votes`.`entry_id` = 4
0
   (0.2ms)  SELECT COUNT(*) FROM `votes` WHERE `votes`.`entry_id` = 5
0

個人の数は非常に速いですが、特に数千または数百万のコレクションがある場合は、Allに電話するのは気が進まないです。レコードをバッチオポレーションとしてカウントする方法はありますか?

4

1 に答える 1

0

「すべて」の意味がわかりませんが、同じことを行い、GROUPBYIDとCOUNT関数を使用してみてください。このようなもの:

SELECT COUNT(*) FROM Votes GROUP BY entry_id
于 2012-05-15T18:35:45.613 に答える