MERGE Statement
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Diverse | PL / SQL | SQL | RAC | WebLogic | Linux
Hjem “Artikler” 9i “Her
MERGE
udsagn blev introduceret i Oracle 9i for at indsætte eller opdatere betinget data afhængigt af dets tilstedeværelse, en proces også kendt som en “upsert”. MERGE
udsagn reducerer bordscanninger og kan udføre operationen parallelt, hvis det er nødvendigt.
- Syntaks
- Performance
Relaterede artikler.
- MERGE-erklæringen
- MERGE-erklæring Forbedringer i Oracle Database 10g
Syntaks
Overvej følgende eksempel, hvor data fra HR_RECORDS
-tabellen flettes til EMPLOYEES
-tabel.
Kilden kan også være en forespørgsel.
Ydelse
MERGE
-erklæringen er optimeret til at flette datasæt i stedet for enkelte rækker, som vist i eksemplet nedenfor.
Opret følgende testtabeller. Kildetabellen indeholder alle rækkerne fra ALL_OBJECTS
visning, mens destinationstabellen indeholder ca. halvdelen af rækkerne.
Den følgende kode sammenligner udførelsen af fire fletteoperationer. Den første bruger den lige MERGE
udsagn. Den anden bruger også udsagnet MERGE
, men på række for række. Den tredje udfører en opdatering og indsætter betingelsen rækken, hvis opdateringen berører nul rækker. Den fjerde indsætter rækken og udfører derefter en opdatering, hvis indsatsen mislykkes med en duplikatværdi på indeksundtagelsen.
Outputtet viser den lige MERGE
-udtalelse er en ordre af styrke hurtigere end dens nærmeste rival. Opdateringen / indsatsen udfører næsten dobbelt så hurtigt som indsættelsen / opdateringen og udjævner lige efter række-for-række MERGE
.
Bare sammenligning af opdateringen / indsættelsen og indsæt / opdateringsmetoderne isoleret, skal vi huske, at sammenligningerne varierer afhængigt af dataene i tabellen. Hvis de fleste af dataene ikke allerede er til stede, kan indsæt / opdateringsmetoden muligvis være bedre. Hvis de fleste af dataene allerede er til stede, vil opdaterings- / indsætningsmetoden sandsynligvis være bedre. Hvis du ikke er sikker, skal du bare bruge flette, da det er tydeligere.
Ud over at den lige MERGE
udsagn er hurtigere, fordi det er en DML-sætning, den kan køres let parallelt for at forbedre ydeevnen yderligere, forudsat at din server kan håndtere den ekstra belastning.
For mere information se:
- MERGE-erklæringen
- Forbedringer af MERGE Statement i Oracle Database 10g
- MERGE
Håber dette hjælper. Hilsen Tim …
Tilbage til toppen.