Usa UNION ALL sempre que possível
2026-09-14
Em SQL usa-se UNION para somar o resultado de duas queries. Mas muitas das vezes devia usar-se UNION ALL ao invés.
Sabias que o UNION, depois de somar os dois resultados, faz uma operação de deduplicação para garantir que o resultado não tem registos repetidos? E isso dá bastante trabalho.
Em boa parte dos casos, nós já sabemos à partida que os resultados são mutuamente exclusivos. Por exemplo quando seleccionamos dados distintos:
SELECT id FROM ZDOC_HEADER
UNION
SELECT id FROM ZDOC_ITEM
Neste caso, faz sentido evitar que o sistema perca tempo (e é muito!) a deduplicar algo que já sabemos não ter duplicados. E nesses casos usas UNION ALL:
SELECT id FROM ZDOC_HEADER
UNION ALL
SELECT id FROM ZDOC_ITEM
Dependendo da quantidade de registos, a query pode facilmente ficar 20% mais rápida.
O Abapinho saúda-vos.
