prohlášení SLOUČENÍ
8i | 9i | 10 g | 11 g | 12c | 13c | 18c | 19c | 21c | Různé | PL / SQL | SQL | RAC | WebLogic | Linux
Domů „Články“ 9i „Zde
V systému Oracle 9i byl zaveden příkaz MERGE
, který podmíněně vkládá nebo aktualizuje data v závislosti na jejich přítomnosti, proces známý také jako „upsert“. Příkaz MERGE
snižuje prohledávání tabulek a v případě potřeby může operaci provést paralelně.
- Syntaxe
- Výkon
Související články.
- Prohlášení Sloučení
- Vylepšení Sloučení prohlášení v Oracle Database 10g
Syntax
Zvažte následující příklad, kdy jsou data z HR_RECORDS
sloučena do EMPLOYEES
tabulka.
Zdrojem může být také dotaz.
Výkon
MERGE
příkaz je optimalizován pro slučování sad dat, nikoli jednotlivých řádků, jak ukazuje následující příklad.
Vytvořte následující testovací tabulky. Zdrojová tabulka obsahuje všechny řádky z ALL_OBJECTS
zobrazení, zatímco cílová tabulka obsahuje přibližně polovinu řádků.
Následující kód porovnává výkon čtyř operací sloučení. První používá přímý MERGE
příkaz. Druhý také používá příkaz MERGE
, ale způsobem řádek po řádku. Třetí provede aktualizaci a podmíněně vloží řádek, pokud se aktualizace dotkne nulových řádků. Čtvrtý vloží řádek a poté provede aktualizaci, pokud vložení selže s duplicitní hodnotou na výjimku indexu.
Výstup ukazuje přímý MERGE
příkaz je objednávka mnohem rychlejší než jeho nejbližší soupeř. Aktualizace / vložení provádí téměř dvojnásobnou rychlost vložení / aktualizace a vyrovnání provádí řádek po řádku MERGE
.
Jen porovnání aktualizace / vložení a metody vkládání / aktualizace v izolaci, musíme si pamatovat, že srovnání se budou lišit v závislosti na datech v tabulce. Pokud většina údajů již nebude k dispozici, může být přístup vložení / aktualizace lepší. Pokud je již většina dat k dispozici, bude pravděpodobně lepší přístup k aktualizaci / vložení. Pokud si nejste jisti, jednoduše použijte sloučení, protože je to jasnější.
Kromě toho, že přímý MERGE
je rychlejší, protože se jedná o prohlášení DML, může lze snadno spustit paralelně, abyste dále zlepšili výkon, za předpokladu, že váš server zvládne dodatečné zatížení.
Další informace najdete v:
- Příkaz SLOUČENÍ
- VYLEPŠENÍ prohlášení SLOUČENÍ v Oracle Database 10g
- SLOUČENÍ
Doufám, že to pomůže. S pozdravem Tim …
Zpět nahoru.