我有一個非常緩慢的查詢,看起來像這樣:什麼是我可以減少的一種方式,包括關聯查詢?
people = includes({ project: [{ best_analysis: :main_language }, :logo] }, :name, name_fact: :primary_language)
.where(name_id: limit(limit).unclaimed_people(opts))
看那includes
方法調用,並通知正在加載協會的數量巨大。在RailsSpeed書,有以下報價:
「例如,考慮一下:
Car.all.includes(:drivers, { parts: :vendors }, :log_messages)
多少ActiveRecord對象可能會在此實例?
答案是:
# Cars * (avg # drivers/car + avg log messages/car + average parts/car * (average parts/vendor))
每個渴望負荷增加實例化對象的數量,進而減慢查詢。如果不使用這些對象,則可能會不必要地減慢查詢速度。請注意,嵌套的熱切加載(上面示例中的部件和供應商)可以真正增加實例化的對象數量。
小心你的渴望負荷築巢,始終與生產數據進行測試,看看是否包括被真正加快你的整體性能。」
書中沒有提到這可能是一個很好的替代這個雖然。所以我的問題是我可以用什麼技術替代includes
?
您是否正在檢索您包含的所有關係? –
如果你的意思是我是否正在使用我包含的所有關係,那麼是的。這些模型是需要一個視圖。 –