Z punktu widzenia wydajności te zapytania są identyczne.
UNION ALL nie zaszkodzi wydajności, ponieważ Oracle szacuje UNION Zapytanie tylko wtedy, gdy tego potrzebuje, nie buforuje wyników w pierwszej kolejności.
SELECT składnia jest bardziej elastyczna w tym sensie, że możesz łatwiej manipulować SELECT zapytaj, jeśli chcesz coś zmienić.
Na przykład to zapytanie:
insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
select 8000,0,'Multi 8000',1 from dual
union all select 8001,0,'Multi 8001',1 from dual
można przepisać jako
INSERT
INTO pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
SELECT 7999 + level, 0, 'Multi ' || 7999 + level, 1
FROM dual
CONNECT BY
level <= 2
Zastępując 2 przy odpowiedniej liczbie możesz uzyskać dowolną liczbę wierszy.
W przypadku INSERT ALL , musiałbyś zduplikować opis tabeli docelowej, który jest mniej czytelny, jeśli potrzebujesz, powiedzmy, 40 wiersze.