Oracle
 sql >> Base de données >  >> RDS >> Oracle

Insertion de plusieurs lignes dans Oracle

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.