A principal diferença entre UNION ALL e UNION é que este assum que se há registros duplicados, os mesmo devem ser removidos, enquanto aquele mantém duplicidades.
UNION ALL vai oferecer um desempenho melhor do que UNION, porque o comando UNION assume que se há registros duplicados que devem ser removidos (matematicamente falando, a união dos dois conjuntos inclui apenas uma cópia da região sobreposta.) Se você usar UNION ALL, será mantido ambas as cópias da região sobreposta.
Claro, se você não tiver qualquer região sobreposta, e certamente não desejar que o motor do banco de dados para classificar e, em seguida, comparar todos os registros para se certificare de que não tem registros duplicados antes dele avançar na execução. UNION ALL por não fazer nada disso – classificação e filtragem – terá melhoras significativas de desempenho sobre o UNION.