(Rails)调用model.association.find时是否应用作用域?

时间:2013-05-28 09:16:37

标签: mysql ruby-on-rails

例如,我有:

class School < ActiveRecord::Base
  has_many :students
end

one_school = School.first

使用之间是否存在速度差异:

Student.find :all, :conditions => { :first_name => "John", :school_id => one_school.id }

one_school.students.find :all, :conditions => { :first_name => "John" }

我想知道调用“one_school.students.find”是否会遍历所有学生记录,还是只会遍历属于one_school的学生记录?

这更多是关于表现的问题。我需要知道后一个查询在rails中是否真的更快。

1 个答案:

答案 0 :(得分:0)

基本相同(在两种情况下Rails都会使用join),您可以在服务器控制台中查看查询及其性能并进行比较。要提高效果,请务必在学生表上为school_id编制索引。