Dal punto di vista delle prestazioni, queste query sono identiche.
UNION ALL
non danneggerà le prestazioni, poiché Oracle
stima la UNION
'ed interroga solo quando ne ha bisogno, non memorizza prima nella cache i risultati.
SELECT
la sintassi è più flessibile nel senso che puoi più facilmente manipolare il SELECT
interroga se vuoi cambiare qualcosa.
Ad esempio, questa query:
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
può essere riscritto come
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
Sostituendo 2
con il numero appropriato, puoi ottenere il numero di righe che desideri.
In caso di INSERT ALL
, dovresti duplicare la descrizione della tabella di destinazione, che è meno leggibile se hai bisogno, ad esempio, di 40
righe.