Индекс миграции Rails для объединенных таблиц - PullRequest
0 голосов
/ 08 сентября 2011

Я использую рельсы 3, и моя производственная база данных - это postgres на Heroku. Как мне создать правильный индекс для этого запроса? Я не знаю, как создать его для внутреннего объединения, которое происходит.

SELECT "plans".* FROM "plans" 
INNER JOIN "schedules" 
ON "plans".schedule_id = "schedules".id 
WHERE (("schedules".user_id = 4))

1 Ответ

0 голосов
/ 08 сентября 2011

Вы должны иметь возможность добавить индекс для schedules.user_id:

add_index :schedules, :user_id

... и другой индекс для планов по расписанию:

add_index :plans, :schedule_id

Дополнительно, если вы 'пытаясь загрузить все расписания с соответствующими планами, вы, вероятно, должны использовать левое соединение:

select plans.*
  from schedules
  left join plans on plans.schedule_id = schedule.id
  where schedules.user_id = 4

Я думаю, что левое соединение будет правильным для того, что вы хотите здесь.

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