轨道上的“ #includes”位置重要吗?

时间:2018-11-12 14:56:50

标签: ruby-on-rails activerecord

我发现查询的加载时间太长,因此我想知道include的位置是否重要。

示例A:

people = Person.where(name: 'guillaume').includes(:jobs)

示例B:

people = Person.includes(:jobs).where(name: 'guillaume')

示例A更快吗,因为我应该减少人们的工作量?

1 个答案:

答案 0 :(得分:2)

简短回答:否。

ActiveRecord会构建您的查询,并且只要您不需要记录,它就不会将最终的SQL查询发送到数据库以获取它们。您粘贴的两个查询是相同的。

如有疑问,您随时可以打开rails console,在此处写查询并观察打印出来的查询。在您的示例中,它将类似于:

SELECT  "people".* FROM "people" WHERE "people"."name" = $1 LIMIT $2  [["name", "guillaume"], ["LIMIT", 11]]
SELECT "jobs".* FROM "jobs" WHERE "jobs"."person_id" = 1

在两种情况下