MERGE-instructie
8i | 9i | 10 g | 11g | 12c | 13c | 18c | 19c | 21c | Diversen | PL / SQL | SQL | RAC | WebLogic | Linux
Home “Artikelen” 9i “Hier
De MERGE
-instructie werd geïntroduceerd in Oracle 9i om voorwaardelijk in te voegen of bij te werken afhankelijk van hun aanwezigheid, een proces dat ook bekend staat als een “upsert”. De MERGE
-instructie vermindert tabelscans en kan de bewerking indien nodig parallel uitvoeren.
- Syntaxis
- Prestaties
Gerelateerde artikelen.
- De MERGE-verklaring
- MERGE-verklaring Verbeteringen in Oracle Database 10g
Syntax
Beschouw het volgende voorbeeld waarin gegevens uit de HR_RECORDS
-tabel worden samengevoegd in de EMPLOYEES
tabel.
De bron kan ook een zoekopdracht zijn.
Prestaties
De MERGE
-instructie is geoptimaliseerd voor het samenvoegen van gegevenssets, in plaats van enkele rijen, zoals in het onderstaande voorbeeld.
Maak de volgende testtabellen. De brontabel bevat alle rijen van de ALL_OBJECTS
bekijken, terwijl de bestemmingstabel ongeveer de helft van de rijen bevat.
De volgende code vergelijkt de prestaties van vier samenvoegbewerkingen. De eerste gebruikt de rechte MERGE
-instructie. De tweede gebruikt ook de instructie MERGE
, maar dan op een rij-voor-rij-manier. De derde voert een update uit en voegt voorwaardelijk de rij in als de update nul rijen raakt. De vierde voegt de rij in en voert vervolgens een update uit als de invoeging mislukt met een dubbele waarde op indexuitzondering.
De uitvoer toont de rechte MERGE
-instructie is een bestelling van omvang sneller dan zijn naaste rivaal. De update / insert voert bijna tweemaal de snelheid uit van de insert / update en even out voert de rij voor rij MERGE
uit.
Gewoon de update / insert vergelijken en de invoeg- / update-methoden afzonderlijk, moeten we onthouden dat de vergelijkingen zullen variëren afhankelijk van de gegevens in de tabel. Als de meeste gegevens niet al aanwezig zijn, is de invoeg- / update-aanpak wellicht beter. Als de meeste gegevens al aanwezig zijn, zal de update / insert-benadering waarschijnlijk beter zijn. Als je het niet zeker weet, gebruik dan gewoon samenvoegen, aangezien het duidelijker is.
Naast de directe MERGE
-instructie die sneller is, omdat het een DML-instructie is, kan het kunnen eenvoudig parallel worden uitgevoerd om de prestaties verder te verbeteren, op voorwaarde dat uw server de extra belasting aankan.
Zie voor meer informatie:
- De MERGE-verklaring
- Verbeteringen in de MERGE-verklaring in Oracle Database 10g
- MERGE
Ik hoop dat dit helpt. Met vriendelijke groet Tim …
Terug naar de top.