user.rb
has_many :programs, dependent: :destroy
def active_program
programs.where(active: true).limit(1).first
end
schema.rb
add_index "programs", ["active"], :name => "index_programs_on_active"
add_index "programs", ["user_id"], :name => "index_programs_on_user_id"
程序表中只有105行。
以下是针对单个请求的New Relic跟踪细分的一部分,经过编辑以关注相关组件。
我不明白为什么这两个组件花了这么长时间。
我假设Program#find_by_sql
正在使用默认查询跟踪,因此没有执行57次实际查询,但为什么在一个小表上执行简单查询需要1350ms呢?
另外,为什么user.active_program
需要花费1070毫秒才会调用查询?
我正在使用Rails 3.2.13和Ruby 1.9.3p429。
答案 0 :(得分:0)
答案 1 :(得分:0)
获得更多见解的好方法,SQLs Rails将为您创建的内容以及它们的执行方式可以查看SQL的日志并在MySQL中尝试EXPLAIN [YOUR_SQL]
,这将为您提供一些不错的提示