UNION объединяет результаты двух SELECT-запросов и убирает дубликаты. UNION ALL — объединяет без удаления дубликатов. UNION ALL быстрее, потому что не нужно сортировать и дедуплицировать. Если точно знаешь, что дубликатов не будет (или они не мешают) — всегда используй UNION ALL. Оба требуют одинаковое количество столбцов с совместимыми типами. Типичный кейс: объединить данные из разных таблиц (архивные + текущие заказы) или создать виртуальные строки для отчёта.