SQL: Join
Теория: CROSS JOIN (перекрестное соединение)
В этом уроке мы разберем операцию CROSS JOIN. Этот тип соединения позволяет получить все возможные сочетания строк из двух таблиц.
Применяем CROSS JOIN
Рассмотрим пример. Допустим, у нас есть таблицы с цветами и материалами тканей:
colors
materials
Тогда с помощью соединения CROSS JOIN мы можем построить результат, который состоит из всех возможных сочетаний цвета и материала:
Имя первой таблицы указывается после слова FROM. Следом идет инструкция CROSS JOIN и имя второй таблицы.
Результат выполнения запроса:
colors CROSS JOIN materials
CROSS JOIN соединяет каждую строку из первой таблицы с каждой строкой из второй таблицы. Поэтому число строк в результате — это произведение количества строк из первой таблицы с количеством строк из второй таблицы. В нашем случае получилось шесть строк — это все возможные сочетания для двух цветов и трех материалов: 2 * 3 = 6.
Следует осторожно пользоваться операцией CROSS JOIN, так как результат может оказаться очень большим. Если в исходных таблицах 20 и 30 тысяч строк, то в результате будет 600 миллионов строк. Даже если в запросе есть инструкция WHERE, СУБД может потратить много времени и ресурсов на формирование и фильтрацию ненужных значений.
С помощью схемы опишем работу CROSS JOIN в общем виде:
Схема работы CROSS JOIN. Результат содержит все сочетания пар
Выводы
В этом уроке мы изучили первый тип соединения таблицы — CROSS JOIN. Оно полезно, когда необходимо получить все комбинации строк из двух таблиц. Число строк в результате может быть очень большим, поэтому использовать CROSS JOIN следует аккуратно.
.png)














