2012-05-15 11 views
0

我的目標是爲給定集合中的每個模型對象導出選票。在這個例子中,我使用.all,但是在野外,它會是一個產生大集合的地方。我有以下查詢,我關心的問題:活動記錄或mysql中的批計數

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 

單獨計算是非常快的,但是我覺得不舒服呼籲所有的,尤其是當我在成千上萬的集合。有沒有一種方法可以將記錄計爲批量公司?

回答

0

不確定「All」是什麼意思,但是做同樣的事情,只嘗試使用GROUP BY ID和COUNT函數。類似這樣的:

SELECT COUNT(*) FROM Votes GROUP BY entry_id