Instrukcja MERGE
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Różne | PL / SQL | SQL | RAC | WebLogic | Linux
Strona główna „Artykuły” 9i „Tutaj
Instrukcja MERGE
została wprowadzona w Oracle 9i w celu warunkowego wstawienia lub aktualizacji w zależności od ich obecności, proces znany również jako „upsert”. Instrukcja MERGE
redukuje skanowanie tabeli i może wykonywać operację równolegle, jeśli jest to wymagane.
- Składnia
- Wydajność
Powiązane artykuły.
- Instrukcja MERGE
- Instrukcja MERGE Udoskonalenia w Oracle Database 10g
Składnia
Rozważmy następujący przykład, w którym dane z tabeli HR_RECORDS
są scalane w EMPLOYEES
table.
Źródłem może być również zapytanie.
Wydajność
MERGE
jest zoptymalizowana pod kątem łączenia zestawów danych, a nie pojedynczych wierszy, jak pokazano w poniższym przykładzie.
Utwórz następujące tabele testowe. Tabela źródłowa zawiera wszystkie wiersze z elementu ALL_OBJECTS
, podczas gdy tabela docelowa zawiera około połowy wierszy.
Poniższy kod porównuje wydajność czterech operacji scalania. Pierwsza używa prostej instrukcji MERGE
. Druga również używa instrukcji MERGE
, ale w kolejności wiersz po wierszu. Trzeci wykonuje aktualizację i warunkowo wstawia wiersz, jeśli aktualizacja dotyka zerowych wierszy. Czwarty wstawia wiersz, a następnie przeprowadza aktualizację, jeśli wstawianie zakończy się niepowodzeniem i zduplikowaną wartością w przypadku wyjątku indeksu.
W wyniku pokazane jest proste MERGE
instrukcja wielkości szybciej niż jego najbliższy rywal. Aktualizacja / wstawianie działa prawie dwa razy szybciej niż wstawianie / aktualizowanie, a nawet bardziej wyrównuje wyniki wiersz po wierszu MERGE
.
Po prostu porównując aktualizację / wstawianie i oddzielnie metod wstawiania / aktualizowania, musimy pamiętać, że porównania będą się różnić w zależności od danych w tabeli. Jeśli większość danych nie będzie już obecna, podejście wstawiania / aktualizowania może być lepsze. Jeśli większość danych jest już obecna, podejście aktualizuj / wstaw prawdopodobnie będzie lepsze. Jeśli nie jesteś pewien, po prostu użyj funkcji merge, ponieważ jest bardziej przejrzysta.
Oprócz prostego MERGE
instrukcji, która jest szybsza, ponieważ jest to instrukcja DML, może można je łatwo uruchomić równolegle, aby jeszcze bardziej poprawić wydajność, pod warunkiem, że serwer poradzi sobie z dodatkowym obciążeniem.
Aby uzyskać więcej informacji, zobacz:
- Instrukcja MERGE
- Udoskonalenia instrukcji MERGE w Oracle Database 10g
- MERGE
Mam nadzieję, że to pomoże. Pozdrawiam Tim …
Powrót na górę