Set fra ydeevnens synspunkt er disse forespørgsler identiske.
UNION ALL
vil ikke skade ydeevnen, da Oracle
estimerer UNION
'ed forespørgsel, når den har brug for det, cacher den ikke resultaterne først.
SELECT
syntaks er mere fleksibel i den forstand, at du nemmere kan manipulere SELECT
spørg, hvis du vil ændre noget.
For eksempel denne forespørgsel:
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
kan omskrives som
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
Ved at erstatte 2
med passende antal, kan du få et hvilket som helst antal rækker, du ønsker.
I tilfælde af INSERT ALL
, vil du skulle duplikere destinationstabelbeskrivelsen, som er mindre læsbar, hvis du har brug for f.eks. 40
rækker.