Многие люди работают с Ruby on Rails, иногда они не понимают, как использовать include и joins.
Я был одним из таких людей. Однако после использования как include, так и joins я обнаружил следующие различия.
- Include - это левые соединения, а Joins - это внутренние соединения.
- Include также загружает данные связанных таблиц. Объединения просто загружают согласованные данные из таблицы.
- Include использует нетерпеливую загрузку, а Join - отложенную загрузку. Когда мы используем include, он также загружает данные связанной таблицы. Вот почему при получении связанных данных не происходит попадания в базу данных. С другой стороны, в случае объединений, когда нам нужны данные связанной таблицы, происходит обращение к базе данных.
- Когда мы используем включения или объединения, первый вопрос, который приходит нам в голову:
«В каком сценарии нам нужно использовать объединения или включения?»
Ответ на этот вопрос прост. Когда нам нужно использовать данные связанной таблицы, мы будем использовать include, а когда нам нужно использовать только сопоставленные записи, мы будем использовать Joins.
Вот пример; отсюда вы можете более четко понять разницу между включением и объединением.
В следующем примере у нас есть Уведомление, принадлежащее Компании. Итак, компания привязана к таблице уведомлений.
Присоединяется:
Когда мы используем объединения, он просто загружает соответствующие данные таблицы уведомлений. Когда нам нужны данные связанной таблицы, то есть компании, происходит еще одно попадание в базу данных.
Включает:
Когда мы используем include, он также загружает записи связанной таблицы, то есть компании с записями уведомлений. Когда нам нужны связанные записи, в базу данных больше не попадает.
Надеюсь, это было полезно при использовании объединений или включений в разных сценариях.