2
我的困惑來自this question,其中OP有一個像做ActiveRecord ::計算與急切加載使多個數據庫查詢?
class Quote < ActiveRecord::Base
has_many :items
def calc_price
sum = 0
#logic for summation
end
end
在回答模型莖,一對夫婦的人建議直接使用數總和法計算屬性的總和
def total_price
items.sum('price')
end
如果我急於使用Quote.includes(:items).find(:all)
加載數據,數據庫的結尾是否發生,還是使用已經加載到內存中的對象?如果它使用已經加載到內存中的對象,那麼計算不會被卸載到數據庫。
它會使數據庫查詢兩次,一次預加載,然後總結價格?
將相同的邏輯擴展到全部ActiveRecord::Calculations,如果我做了count
或average
或其他類似的方法,我會每次打我的數據庫嗎?
重要的是,如果它只是爲了求和而擊中數據庫,那就是一次命中將返回一個值。與其他任何你可以做的事情相比,速度非常快,並且可能比迭代內存中的數據更快。 –