Зачем на нужны join если есть where?

Учу sql заново, и у меня возник вопрос зачем вообще нужны джоины. Объеденить таблицы ведь можно с помощью фореина и праймари ключей в таблицах и where. Этот вопрос и раньше возникал и был решён, но опять возникли трудности с пониманием.

Чтобы лучше понять о чем я, есть видосик где объясняется подобный способ: https://www.youtube.com/watch?v=wdz4MRlzOyE&ab_channel=CrackConcepts


Ответы (2 шт):

Автор решения: Yitzhak Khabinsky

Вообще говоря, подобные вопросы не для stackoverflow.com.

Есть несколько типов JOIN:

  • INNER JOIN
  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
  • FULL OUTER JOIN
  • CROSS JOIN
  • так далее

Большинство из них невозможно выразить с помощью предложения WHERE.

→ Ссылка
Автор решения: vp_arth

FROM Table1 t1, Table2 t2

Это CROSS JOIN, который в принципе можно урезать с помощью WHERE до нужного состояния.
Но при этом, вы полагаетесь на возможности планировщика СУБД.
Если он способен понять, что ваш WHERE аналогичен JOIN, то вы получите результат аналогичный JOIN, иначе вы рискуете нарваться на загрузку декартова произведения(CROSS JOIN) строк таблиц в память с последующей фильтрацией. =)

→ Ссылка