Имеет ли значение «#includes» положение на рельсах? - PullRequest
0 голосов
/ 12 ноября 2018

Я считаю, что мой запрос загружается слишком долго, поэтому мне интересно, имеет ли значение позиция include.

Пример A:

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

Пример Б:

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

Является ли пример А быстрее, потому что мне нужно загружать меньше рабочих мест?

1 Ответ

0 голосов
/ 12 ноября 2018

Краткий ответ: нет.

ActiveRecord создает ваш запрос и, пока вам не нужны записи, не будет отправлять окончательный запрос SQL в базу данных для их извлечения.Вставленные вами 2 запроса идентичны.

Если есть сомнения, вы всегда можете открыть 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

в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...