MERGE-Anweisung
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Sonstiges | PL / SQL | SQL | RAC | WebLogic | Linux
Home „Artikel“ 9i „Hier
Die Anweisung MERGE
wurde in Oracle 9i eingeführt, um bedingt einzufügen oder zu aktualisieren Daten abhängig von ihrem Vorhandensein, ein Prozess, der auch als „Upsert“ bezeichnet wird. Die Anweisung MERGE
reduziert Tabellenscans und kann den Vorgang bei Bedarf parallel ausführen.
- Syntax
- Leistung
Verwandte Artikel.
- Die MERGE-Anweisung
- Verbesserungen der MERGE-Anweisung in Oracle Database 10g
Syntax
Betrachten Sie das folgende Beispiel, in dem Daten aus der Tabelle HR_RECORDS
in die Tabelle EMPLOYEES
Tabelle.
Die Quelle kann auch eine Abfrage sein.
Leistung
Die MERGE
ist für das Zusammenführen von Datensätzen anstelle einzelner Zeilen optimiert, wie im folgenden Beispiel gezeigt.
Erstellen Sie die folgenden Testtabellen. Die Quelltabelle enthält alle Zeilen aus der ALL_OBJECTS
Ansicht, während die Zieltabelle ungefähr die Hälfte der Zeilen enthält.
Der folgende Code vergleicht die Leistung von vier Zusammenführungsvorgängen. Der erste verwendet die gerade Anweisung MERGE
. Die zweite verwendet auch die Anweisung MERGE
, jedoch zeilenweise. Der dritte führt eine Aktualisierung durch und fügt die Zeile bedingt ein, wenn die Aktualisierung null Zeilen berührt. Der vierte fügt die Zeile ein und führt dann eine Aktualisierung durch, wenn das Einfügen mit einem doppelten Wert bei Indexausnahme fehlschlägt.
Die Ausgabe zeigt, dass die gerade Anweisung MERGE
eine Reihenfolge ist schneller als sein nächster Rivale. Das Update / Insert führt fast die doppelte Geschwindigkeit des Insert / Updates aus und gleicht das zeilenweise MERGE
aus.
Vergleichen Sie einfach das Update / Insert Bei isolierten Einfüge- / Aktualisierungsmethoden müssen wir uns daran erinnern, dass die Vergleiche abhängig von den Daten in der Tabelle variieren. Wenn die meisten Daten noch nicht vorhanden sind, ist der Ansatz zum Einfügen / Aktualisieren möglicherweise besser. Wenn die meisten Daten bereits vorhanden sind, ist der Ansatz zum Aktualisieren / Einfügen wahrscheinlich besser. Wenn Sie sich nicht sicher sind, verwenden Sie einfach die Zusammenführung, da dies klarer ist.
Zusätzlich dazu, dass die gerade MERGE
-Anweisung schneller ist, da es sich um eine DML-Anweisung handelt Sie können problemlos parallel ausgeführt werden, um die Leistung weiter zu verbessern, vorausgesetzt, Ihr Server kann die zusätzliche Last bewältigen.
Weitere Informationen finden Sie unter:
- Die MERGE-Anweisung
- Verbesserungen der MERGE-Anweisung in Oracle Database 10g
- MERGE
Ich hoffe, dies hilft. Grüße Tim …
Zurück zum Anfang.