Desde el punto de vista del rendimiento, estas consultas son idénticas.
UNION ALL
no dañará el rendimiento, ya que Oracle
estima la UNION
'ed consulta solo cuando lo necesita, no almacena en caché los resultados primero.
SELECT
la sintaxis es más flexible en el sentido de que puede manipular más fácilmente el SELECT
consulta si quieres cambiar algo.
Por ejemplo, esta consulta:
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
se puede reescribir como
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
Reemplazando 2
con el número apropiado, puede obtener la cantidad de filas que desee.
En caso de INSERT ALL
, tendría que duplicar la descripción de la tabla de destino, que es menos legible si necesita, digamos, 40
filas.