看完後,最新的RailsCasts用include和join信息,我知道我可以用更高效的方式做我正在做的事情。我有一個非常簡單的用戶模型和狀態模型。用戶屬於狀態,狀態有許多用戶。我需要計算有多少用戶具有特定類型的狀態,這會爲每個狀態創建一個新的SQL計數查詢,並且我知道這不是一個好辦法。它現在看起來像這樣。ActiveRecord通過兩個表格的條件進行計數
statuses = Status.all
statuses.each do |status|
status.users.count
end
我結束了4個疑問:
SELECT count(*) AS count_all FROM "users" WHERE ("users".status_id = 1)
SELECT count(*) AS count_all FROM "users" WHERE ("users".status_id = 2)
它繼續這樣,對儘可能多的不同狀態如存在於數據庫中。最大的問題是,現在我需要由另一個組織進行篩選,這也是組織。所以我需要爲在某個組織中具有特定狀態的所有用戶查找計數。這最終使我的查詢量翻了四倍,感覺很糟糕。我不確定我可以用什麼樣的加入來減少這個問題,或者我可以做些什麼來解決這個問題。感謝您的幫助:)
您的評論激發了我尋找最終解決方案,謝謝:) – ohdeargod 2009-09-29 18:45:27