這可能聽起來有點笨,但我不是數據庫專家。爲什麼我們應該避免1 + N查詢問題?
例如,如果我們有一個User
模型和Comment
模型,每個評論屬於用戶,也有獲取與他們的用戶一起的所有意見的方式有兩種:
# 1.
@comments = Comment.all(:include => :user)
# 2.
@comments = Comment.all()
@users = []
@comments.each do |comment| # Or we do the same loop in embedded code in the view
@users << User.find(comment.user)
end
我的問題是,因爲這兩種方法都會獲取所有評論及其用戶數據(這意味着我們從硬盤驅動器和互聯網上讀取並傳輸相同數量的信息),爲什麼第二種方法被認爲是不好的做法?
因爲更多的查詢通常會造成更糟糕的性能,並且執行100次查詢可能會減少到2個毫無意義。 –
@DamienRoche查詢必須使更多查詢的性能變差嗎? – OneZero
我將在一個答案中演示.. –