簡體   English   中英

Active Record或mysql中的批次計數

[英]Batch count in Active Record or mysql

我的目標是針對給定集合的每個模型對象導出投票。 在此示例中,我使用.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會讓我感到不舒服,尤其是當我擁有成千上萬個收藏夾時。 有沒有一種方法可以將記錄計為批處理?

不知道“全部”是什么意思,但是要執行相同的操作,請僅嘗試使用GROUP BY ID和COUNT函數。 像這樣:

SELECT COUNT(*) FROM Votes GROUP BY entry_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM