Чем оператор SQL UNION ALL отличается от UNION?

«Чем оператор SQL UNION ALL отличается от UNION?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

UNION ALL — это оператор SQL для объединения результирующих наборов нескольких SELECT-запросов. Его ключевое отличие от UNION в том, что он не удаляет дублирующиеся строки.

Пример использования:

SELECT name, department FROM employees
UNION ALL
SELECT name, department FROM contractors;

Сравнение с UNION:

  • Производительность: UNION ALL работает быстрее, так как не выполняет операцию сортировки и дедупликации результатов.
  • Результат: UNION возвращает только уникальные строки, UNION ALL — все строки, включая повторяющиеся.
  • Применение: Используйте UNION ALL, когда дубликаты допустимы или их необходимо сохранить (например, при объединении журналов событий).

Общие для обоих операторов ограничения:

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