MERGE utasítás
8i | 9i | 10g | 11g | 12c 13c 18c 19c 21c Egyéb | PL / SQL | SQL | RAC | WebLogic | Linux
Főoldal “Cikkek” 9i “Itt
A MERGE
utasítást az Oracle 9i-ben vezették be, hogy feltételesen beillesszenek vagy frissítsenek az adatok a jelenlététől függően egy folyamat, amelyet “upsert” néven is ismernek. Az MERGE
utasítás csökkenti a táblázatok beolvasását, és szükség esetén párhuzamosan is elvégezheti a műveletet.
- Szintaxis
- Teljesítmény
Kapcsolódó cikkek.
- A MERGE utasítás
- MERGE utasítás fejlesztések Oracle Database 10g
Szintaxis
Tekintsük a következő példát, ahol a HR_RECORDS
táblázat adatai beolvadnak a EMPLOYEES
táblázat.
A forrás lekérdezés is lehet.
Teljesítmény
A MERGE
utasítás az adatsorok összevonására van optimalizálva, nem pedig egyetlen sorra, amint az az alábbi példában látható.
Hozza létre a következő teszttáblákat. A forrástábla a ALL_OBJECTS
view, míg a céltábla a sorok körülbelül felét tartalmazza.
A következő kód négy egyesítési művelet teljesítményét hasonlítja össze. Az első az egyenes MERGE
utasítást használja. A második az MERGE
utasítást is használja, de soronként. A harmadik frissítést hajt végre, és feltételesen beszúrja a sort, ha a frissítés nulla sort érint. A negyedik beszúrja a sort, majd végrehajt egy frissítést, ha a beillesztés meghiúsul az indexkivétel duplikált értékével.
A kimenet az egyenes MERGE
utasítás parancs nagyságrenddel gyorsabb, mint legközelebbi riválisa. A frissítés / beillesztés a beillesztés / frissítés sebességének majdnem kétszerese, a kiegyenlítés pedig soronként MERGE
.
Csak a frissítés / beillesztés összehasonlítása és a beszúrás / frissítés módszereit külön-külön, emlékeznünk kell arra, hogy az összehasonlítások a táblázatban szereplő adatoktól függően változnak. Ha az adatok nagy része még nem lesz jelen, akkor a beszúrás / frissítés megközelítés jobb lehet. Ha az adatok nagy része már megvan, a frissítés / beillesztés megközelítés valószínűleg jobb lesz. Ha nem biztos benne, akkor egyszerűen használja az egyesítést, mivel ez világosabb.
Amellett, hogy az egyenes MERGE
utasítás gyorsabb, mert ez egy DML utasítás, könnyen párhuzamosan futtatható a teljesítmény további javítása érdekében, feltéve, hogy a szerver képes kezelni az extra terhelést.
További információ:
- A MERGE utasítás
- MERGE utasításjavítások az Oracle Database 10g-ben
- MERGE
Remélem, hogy ez segít. Üdvözlettel Tim …
Vissza a tetejére.