我有以下型号
class Listing < ActiveRecord::Base
has_many :agents, through: :listing_agents
end
class Agent < ActiveRecord::Base
has_many :listings, through: :listing_agents
has_many :emails
has_many :phone_numbers
end
class Email < ActiveRecord::Base
belongs_to :agent
end
class PhoneNumber < ActiveRecord::Base
belongs_to :agent
end
我想知道什么是最小化运行查询量的最佳方法(给定一组listing_ids),这将返回所有代理,代理列表,代理phone_numbers和代理电子邮件。通常我只需做一些像
这样的事情Listing.where(id: listing_ids)
如果listing_ids数组变得足够大,那么在获取代理电子邮件,phone_number以及我想要访问的任何其他可能的has_many关联模型时,遇到N + 1查询的主要问题。
这是否可以通过一些聪明的内部联接?也许这会更好地被问为MySQL问题。