MERGE Statement (Svenska)
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Övrigt | PL / SQL | SQL | RAC | WebLogic | Linux
Hem ”Artiklar” 9i ”Här
MERGE
uttalande introducerades i Oracle 9i för att villkorligt infoga eller uppdatera data beroende på dess närvaro, en process som också kallas ”upsert”. Uttrycket MERGE
minskar tabellskanningar och kan utföra operationen parallellt om det behövs.
- Syntax
- Performance
Relaterade artiklar.
- MERGE-uttalandet
- MERGE-uttalande Förbättringar i Oracle Database 10g
Syntax
Tänk på följande exempel där data från HR_RECORDS
-tabellen slås samman i EMPLOYEES
tabell.
Källan kan också vara en fråga.
Prestanda
MERGE
-uttalandet är optimerat för att slå samman datauppsättningar snarare än enstaka rader, som visas i exemplet nedan.
Skapa följande testtabeller. Källtabellen innehåller alla rader från ALL_OBJECTS
vy, medan måltabellen innehåller ungefär hälften av raderna.
Följande kod jämför prestanda för fyra sammanslagningsoperationer. Den första använder det raka MERGE
-uttrycket. Den andra använder också uttalandet MERGE
, men rad för rad. Den tredje utför en uppdatering och infogar villkorligt raden om uppdateringen berör noll rader. Den fjärde infogar raden och utför sedan en uppdatering om infogningen misslyckas med ett duplikatvärde på indexundantaget.
Utgången visar att det raka MERGE
-uttrycket är en order snabbare än närmaste rival. Uppdateringen / infogningen utför nästan dubbelt så snabbt som infogningen / uppdateringen och jämnar ut rad-för-rad MERGE
.
Jämför bara uppdateringen / infogningen och sätta in / uppdatera metoder isolerat måste vi komma ihåg att jämförelserna kommer att variera beroende på data i tabellen. Om de flesta uppgifterna inte redan finns kan infoga / uppdatera metoden vara bättre. Om de flesta uppgifter redan finns kommer uppdaterings- / infogningsmetoden troligen att vara bättre. Om du är osäker, använd bara sammanfoga eftersom det är tydligare.
Förutom att det raka MERGE
-uttrycket är snabbare, eftersom det är ett DML-uttalande kan det körs enkelt parallellt för att förbättra prestandan ytterligare, förutsatt att din server kan hantera den extra belastningen.
För mer information se:
- MERGE-uttalandet
- MERGE Statement Enhancements in Oracle Database 10g
- MERGE
Hoppas det hjälper. Hälsningar Tim …
Tillbaka till början.