Sobes.tech
Назад к вопросам
Middle
8

Типы JOIN в SQL (логические и физические)?

Компании, где спрашивали
FOM GROUP

Ответ от нейросети

sobes.tech AI

В SQL существуют разные типы JOIN, которые позволяют объединять строки из двух и более таблиц на основе связанных столбцов.

Логические типы JOIN:

  • INNER JOIN — возвращает только те строки, которые имеют совпадения в обеих таблицах.
  • LEFT JOIN (LEFT OUTER JOIN) — возвращает все строки из левой таблицы и совпадающие строки из правой; если совпадений нет, в правой части будут NULL.
  • RIGHT JOIN (RIGHT OUTER JOIN) — аналогично LEFT JOIN, но для правой таблицы.
  • FULL JOIN (FULL OUTER JOIN) — возвращает все строки из обеих таблиц, заполняя NULL там, где нет совпадений.
  • CROSS JOIN — декартово произведение двух таблиц, каждая строка первой таблицы соединяется с каждой строкой второй.

Физические типы JOIN — это способы реализации логических JOIN на уровне СУБД, которые зависят от оптимизатора и структуры данных:

  • Nested Loop Join — для каждой строки из первой таблицы ищет совпадения во второй.
  • Hash Join — строит хеш-таблицу по одной из таблиц и ищет совпадения по хешу.
  • Merge Join — требует отсортированных данных, объединяет таблицы путём последовательного прохода по ним.

Пример INNER JOIN:

SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;