Do ponto de vista do desempenho, essas consultas são idênticas.
UNION ALL não prejudicará o desempenho, pois o Oracle estima a UNION 'ed consulta apenas quando necessário, ele não armazena em cache os resultados primeiro. SELECT a sintaxe é mais flexível no sentido de que você pode manipular mais facilmente o SELECT query se você quiser mudar alguma coisa. Por exemplo, 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
pode ser reescrito 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
Ao substituir
2 com o número apropriado, você pode obter qualquer número de linhas que desejar. No caso de
INSERT ALL , você teria que duplicar a descrição da tabela de destino, que é menos legível se você precisar, digamos, de 40 linhas.