2017-07-11 44 views
0

我想根據發送的日期和數量來繪製一個圖形。獲取此計數的查詢通過下面提到的三個表運行。Rails - 使用350,000條記錄進行活動記錄查詢需要太多時間

賬戶表,信息表和關鍵字表

這些協會都是這樣。

  • 關鍵字has_many帳戶。
  • 帳戶的has_many消息和belong_to關鍵字
  • 消息belongs_to的賬戶

我需要檢查每一天送出的郵件數量。

這是我正在使用的查詢。

(@[email protected]_date.to_date).map {|date| 
Message.joins(:account).where("date(messages.created_at) = ? 
AND accounts.keyword_id = ?", date, keyword.id).count.to_f}.inspect 

請讓我知道任何建議,可以減少運行此查詢的時間。

回答

0

我想你可以做這樣的:

keyword.messages.where(
    :created_at => [@[email protected]_date.to_date] 
).count 

它將查詢是這樣的:

SELECT COUNT(*) 
FROM `messages` 
WHERE `keyword_id` = [keyword.id] AND (`created_at` BETWEEN '[from_date]' AND '[to_date]') 
0

內幕消息模型添加此

def date 
    self.created_at.strftime('"%d-%m-%Y') 
end 

Message.joins(:account).where("date(messages.created_at) <= ? AND date(messages.created_at) >= ? AND accounts.keyword_id = ?", @from_date.to_date,@to_date.to_date, keyword.id).group(:date).count 

嘗試上面可以幫助你out