Для чего применяется ключевое слово UNION?
UNION объединяет результаты двух или более SELECT-запросов в единый результирующий набор. Оба запроса должны возвращать одинаковое число столбцов, а типы данных в соответствующих позициях должны быть совместимы.
| Оператор | Дубликаты | Производительность |
|---|---|---|
UNION |
Удаляет дубликаты (неявный DISTINCT) |
Медленнее (требуется сортировка/хэширование) |
UNION ALL |
Сохраняет дубликаты | Быстрее |
Пример
-- Объединение клиентов и поставщиков в один список
SELECT name, city FROM customers
UNION
SELECT name, city FROM suppliers
ORDER BY name;
UNION сам по себе не гарантирует порядок записей — записи из второго запроса могут оказаться в любом месте результата. Для определённого порядка необходимо использовать ORDER BY, который ставится только после последнего SELECT и применяется ко всему объединённому результату.
На практике, если вы уверены, что дубликатов нет, или дубликаты допустимы, всегда предпочитайте UNION ALL — он работает быстрее, так как не тратит ресурсы на удаление дубликатов.
На собеседовании: обязательно упомяните разницу между
UNIONиUNION ALL. Частая ошибка — использоватьUNION(с удалением дубликатов) там, где достаточноUNION ALL, создавая лишнюю нагрузку.