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.