sql >> Databasteknik >  >> RDS >> Oracle

Infogar flera rader i Oracle

Ur prestandasynpunkt är dessa frågor identiska.

UNION ALL kommer inte att skada prestandan, eftersom Oracle uppskattar UNION 'ed query endast när den behöver den, cachelagrar den inte resultaten först.

SELECT syntaxen är mer flexibel i den meningen att du enklare kan manipulera SELECT fråga om du vill ändra något.

Till exempel den här frågan:

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

kan skrivas om som

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

Genom att ersätta 2 med lämpligt antal kan du få valfritt antal rader du vill.

I fallet med INSERT ALL , skulle du behöva duplicera destinationstabellens beskrivning, som är mindre läsbar om du behöver, säg, 40 rader.



  1. Hur man får värden som inte innehåller siffror i SQL Server

  2. Utveckling av feltolerans i PostgreSQL

  3. Varför det är viktigt att begränsa användaråtkomst i din databas

  4. Återställ en kopia av din databas