Du point de vue des performances, ces requêtes sont identiques.
UNION ALL
n'affectera pas les performances, car Oracle
estime l'UNION
'ed requête uniquement lorsqu'il en a besoin, il ne met pas les résultats en cache en premier.
SELECT
la syntaxe est plus flexible dans ce sens que vous pouvez plus facilement manipuler le SELECT
demander si vous voulez changer quelque chose.
Par exemple, cette requête :
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
peut être réécrit comme
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
En remplaçant 2
avec le nombre approprié, vous pouvez obtenir le nombre de lignes que vous souhaitez.
En cas de INSERT ALL
, vous devrez dupliquer la description de la table de destination, qui est moins lisible si vous avez besoin, par exemple, de 40
lignes.