我有一個模型 - Link
- 有很多命中。我正在嘗試的是從數據庫表中隨時間推移每小時的點擊數的彙總數據 - hits
- 列year
,month
,day
和hour
。Rails在查詢結果
一切工作正常,但是當我運行下面的代碼時,最後幾乎1,000數據庫上的查詢,這似乎是非常過分。
#before iteration
@hits = @link.hits.group('year, month, day, hour')
.order('year ASC, month ASC, day ASC, hour ASC')
.select('year, month, day, hour, count(*) as hits')
#inside iteration
#Line breaks are included here for easy reading
hits_per_hour =
@hits.where(
:year => t.year,
:month => t.month,
:day => t.day,
:hour => t.hour
).map(&:hits).first || 0
這裏t
是Time
對象,在1小時的步驟迭代由於第一打一個鏈路接收。
我會認爲,軌會存儲查詢結果,而不是每次重新查詢。我也無法找到關於緩存查詢結果或任何內容的任何信息。我只是完全錯過了一些東西,還是這真的是最簡單的方法?
這裏的查詢是什麼樣子的樣本(這是我在日誌中看到一千年的塊):
SELECT year, month, day, hour, count(*) as hits
FROM `hits`
WHERE
`hits`.`link_id` = 1 AND
`hits`.`year` = 2012 AND
`hits`.`month` = 11 AND
`hits`.`day` = 2 AND
`hits`.`hour` = 14
GROUP BY year, month, day, hour
ORDER BY year ASC, month ASC, day ASC, hour ASC
1000個查詢請求什麼?這可以通過急切加載協會來改善嗎? – pje
沒有關聯正在加載。自創建鏈接以來,它每小時運行一次(現在大約3周)。我將爲該問題添加一個查詢示例。 – Jon