Z hlediska výkonu jsou tyto dotazy totožné.
UNION ALL
nepoškodí výkon, protože Oracle
odhaduje UNION
'ed dotaz, pouze když to potřebuje, neukládá výsledky jako první.
SELECT
syntaxe je flexibilnější v tom smyslu, že můžete snáze manipulovat s SELECT
dotaz, pokud chcete něco změnit.
Například tento dotaz:
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
lze přepsat 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
Nahrazením 2
s příslušným číslem můžete získat libovolný počet řádků.
V případě INSERT ALL
, museli byste duplikovat popis cílové tabulky, který je méně čitelný, pokud potřebujete, řekněme, 40
řádky.