Многие люди работают с Ruby on Rails, иногда они не понимают, как использовать include и joins.

Я был одним из таких людей. Однако после использования как include, так и joins я обнаружил следующие различия.

  • Include - это левые соединения, а Joins - это внутренние соединения.
  • Include также загружает данные связанных таблиц. Объединения просто загружают согласованные данные из таблицы.
  • Include использует нетерпеливую загрузку, а Join - отложенную загрузку. Когда мы используем include, он также загружает данные связанной таблицы. Вот почему при получении связанных данных не происходит попадания в базу данных. С другой стороны, в случае объединений, когда нам нужны данные связанной таблицы, происходит обращение к базе данных.
  • Когда мы используем включения или объединения, первый вопрос, который приходит нам в голову:

«В каком сценарии нам нужно использовать объединения или включения?»

Ответ на этот вопрос прост. Когда нам нужно использовать данные связанной таблицы, мы будем использовать include, а когда нам нужно использовать только сопоставленные записи, мы будем использовать Joins.

Вот пример; отсюда вы можете более четко понять разницу между включением и объединением.

В следующем примере у нас есть Уведомление, принадлежащее Компании. Итак, компания привязана к таблице уведомлений.

Присоединяется:

Когда мы используем объединения, он просто загружает соответствующие данные таблицы уведомлений. Когда нам нужны данные связанной таблицы, то есть компании, происходит еще одно попадание в базу данных.

Включает:

Когда мы используем include, он также загружает записи связанной таблицы, то есть компании с записями уведомлений. Когда нам нужны связанные записи, в базу данных больше не попадает.

Надеюсь, это было полезно при использовании объединений или включений в разных сценариях.