Что такое CROSS JOIN в SQL?

«Что такое CROSS JOIN в SQL?» — вопрос из категории SQL, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CROSS JOIN (декартово соединение) возвращает декартово произведение двух таблиц — каждая строка первой таблицы соединяется с каждой строкой второй. Это полезно для генерации всех возможных комбинаций, но требует осторожности из-за потенциально огромного размера результата.

Пример:

-- Генерация всех комбинаций цветов и размеров
SELECT *
FROM colors
CROSS JOIN sizes;

Если таблица colors содержит ['red', 'blue'], а sizes — ['S', 'M'], результат будет:

color | size
------|-----
red   | S
red   | M
blue  | S
blue  | M

Ключевые особенности:

  1. Не требует условия ON — в отличие от INNER/LEFT JOIN
  2. Размер результата = количество строк таблицы1 × количество строк таблицы2
  3. Производительность — может быть ресурсоемким для больших таблиц (1000×1000 = 1 млн строк)
  4. Синтаксические варианты:
    
    -- Явный CROSS JOIN
    SELECT * FROM t1 CROSS JOIN t2;

-- Неявный через запятую (устаревший стиль) SELECT * FROM t1, t2;



**Практическое применение:** генерация тестовых данных, создание матриц комбинаций, кросс-таблицы для отчетов.