【发布时间】:2012-03-04 15:40:14
【问题描述】:
我正在使用 Ruby on Rails 3.1,并且我正在尝试改进 SQL 查询,以便以高效的方式检索“关联”记录和“关联通过”记录 (ActiveRecord::Associations),以避免“N + 1 查询问题”。也就是说,我有:
class Article < ActiveRecord::Base
has_many :category_relationships
has_many :categories,
:through => :category_relationships
end
class Category < ActiveRecord::Base
has_many :article_relationships
has_many :articles,
:through => :article_relationships
end
在几个 SQL 查询中(即以“高性能方式”,可能使用 Ruby on Rails includes() 方法)我想同时检索 categories 和 category_relationships em>,或articles 和article_relationships。
我怎样才能做到这一点?
P.S.:我正在改进如下查询:
@category = Category.first
articles = @category.articles.where(:user_id => @current_user.id)
articles.each do |article|
# Note: In this example the 'inspect' method is just a method to "trigger" the
# "eager loading" functionalities
article.category_relationships.inspect
end
【问题讨论】:
-
你到底要优化什么查询?
-
@iltempo - 我更新了问题。
标签: sql ruby-on-rails ruby ruby-on-rails-3 performance