Ruby计数到数据库的查询次数?

时间:2017-09-21 16:59:33

标签: ruby-on-rails ruby

有一些我不完全理解的东西。 看看这个对数据库进行n次调用(或查询)的例子,其中n是客户数量。

@reports = Report.where(:car => car)

for customer in customers
  report = @reports.where(:city => customer.city, :age=> customer.age)
end

下面这个只调用一次数据库,对吗?

@reports = Report.where(:car => car).where( :city => customers.map(&:city), :age => customers.map(&:age))

for customer in customers
  report = @reports.detect(:city => customer.city, :age=> customer.age)
end

1 个答案:

答案 0 :(得分:1)

是的,第二个例子只是调用数据库。

执行@reports= Report.where(:car => car).where( :city => customers.map(&:city), :age => customers.map(&:age)) 后,您将所有这些记录加载到@reports变量中。

因此,在检测部分,它不需要调用数据库,因为记录已经存在。