MERGE Statement (Norsk)
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Diverse | PL / SQL | SQL | RAC | WebLogic | Linux
Hjem «Artikler» 9i «Her
MERGE
uttalelsen ble introdusert i Oracle 9i for å sette inn eller oppdatere betinget data avhengig av tilstedeværelse, en prosess også kjent som en «upsert». Uttalelsen MERGE
reduserer tabellskanninger og kan utføre operasjonen parallelt om nødvendig.
- Syntaks
- Ytelse
Relaterte artikler.
- MERGE-uttalelsen
- MERGE-uttalelse Forbedringer i Oracle Database 10g
Syntaks
Tenk på følgende eksempel der data fra HR_RECORDS
-tabellen flettes inn i EMPLOYEES
tabell.
Kilden kan også være et spørsmål.
Ytelse
MERGE
uttalelse er optimalisert for å slå sammen datasett, i stedet for enkeltrader, som vist i eksemplet nedenfor.
Opprett følgende testtabeller. Kildetabellen inneholder alle radene fra ALL_OBJECTS
view, mens destinasjonstabellen inneholder omtrent halvparten av radene.
Den følgende koden sammenligner ytelsen til fire sammenslåingsoperasjoner. Den første bruker rett MERGE
utsagn. Den andre bruker også utsagnet MERGE
, men på rad for rad-måte. Den tredje utfører en oppdatering og setter inn raden betinget hvis oppdateringen berører null rader. Den fjerde setter inn raden og utfører deretter en oppdatering hvis innsatsen mislykkes med en duplikatverdi på indeks unntak.
Utgangen viser den rette MERGE
setningen er en ordre av styrke raskere enn nærmeste rival. Oppdateringen / innsatsen utfører nesten dobbelt så høy hastighet som innsatsen / oppdateringen, og utjevner rad-for-rad MERGE
.
Bare sammenligning av oppdateringen / innsatsen og innsettings- / oppdateringsmetodene isolert, må vi huske at sammenligningene vil variere avhengig av dataene i tabellen. Hvis de fleste av dataene ikke allerede er tilstede, kan innsettings- / oppdateringsmetoden være bedre. Hvis de fleste av dataene allerede er til stede, vil sannsynligvis oppdaterings- / innsettingsmetoden være bedre. Hvis du ikke er sikker, er det bare å bruke flette som det er tydeligere.
I tillegg til at rett MERGE
-utsagnet er raskere, fordi det er en DML-setning det kan kjøres enkelt parallelt for å forbedre ytelsen ytterligere, forutsatt at serveren din takler ekstra belastning.
For mer informasjon, se:
- MERGE Statement
- MERGE Statement Enhancements in Oracle Database 10g
- MERGE
Håper dette hjelper. Hilsen Tim …
Tilbake til toppen.