Declarație MERGE
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Diverse | PL / SQL | SQL | RAC | WebLogic | Linux
Acasă „Articole” 9i „Aici
Instrucțiunea MERGE
a fost introdusă în Oracle 9i pentru a insera sau actualiza condiționat date în funcție de prezența sa, un proces cunoscut și sub denumirea de „upsert”. Instrucțiunea MERGE
reduce scanările tabelelor și poate efectua operațiunea în paralel, dacă este necesar.
- Sintaxă
- Performanță
Articole corelate.
- Declarația MERGE
- Îmbunătățirile declarației MERGE în Oracle Database 10g
Sintaxă
Luați în considerare următorul exemplu în care datele din tabelul HR_RECORDS
sunt îmbinate în EMPLOYEES
tabel.
Sursa poate fi de asemenea o interogare.
Performanță
MERGE
este optimizată pentru îmbinarea seturilor de date, mai degrabă decât a rândurilor simple, așa cum se arată în exemplul de mai jos.
Creați următoarele tabele de testare. Tabelul sursă conține toate rândurile din ALL_OBJECTS
view, în timp ce tabelul de destinație conține aproximativ jumătate din rânduri.
Următorul cod compară performanța a patru operații de îmbinare. Primul folosește declarația dreaptă MERGE
. Al doilea folosește, de asemenea, instrucțiunea MERGE
, dar într-un mod rând cu rând. Al treilea efectuează o actualizare și introduce condiționat rândul dacă actualizarea atinge zero rânduri. Al patrulea inserează rândul, apoi efectuează o actualizare dacă inserarea eșuează cu o valoare duplicată la excepția indexului.
Ieșirea arată declarația dreaptă MERGE
este o ordine de mărime mai rapid decât cel mai apropiat rival al său. Actualizarea / inserarea efectuează aproape de două ori viteza de inserare / actualizare și uniformizarea efectuează rând cu rând MERGE
.
Doar comparând actualizarea / inserarea și metodele de inserare / actualizare izolate, trebuie să ne amintim că comparațiile vor varia în funcție de datele din tabel. Dacă majoritatea datelor nu vor fi deja prezente, abordarea insert / update poate fi mai bună. Dacă majoritatea datelor sunt deja prezente, abordarea de actualizare / inserare va fi probabil mai bună. Dacă nu sunteți sigur, utilizați doar merge, deoarece este mai clar.
În plus față de declarația directă MERGE
fiind mai rapidă, deoarece este o instrucțiune DML pe care o poate rulați ușor în paralel pentru a îmbunătăți performanța, cu condiția ca serverul dvs. să poată gestiona sarcina suplimentară.
Pentru mai multe informații, consultați:
- Declarația MERGE
- Îmbunătățiri ale declarației MERGE în baza de date Oracle 10g
- MERGE
Sper că acest lucru vă va ajuta. Cu respect Tim …
Înapoi la început.