Aktualizacje oparte na zapytaniach

8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Różne | PL / SQL | SQL | RAC | WebLogic | Linux

Strona główna „Artykuły” Różne „tutaj

Ten artykuł opisuje, jak można zaktualizować tabelę przy użyciu danych z innej tabeli.

  • Konfiguracja
  • Metoda podzapytania
  • Metoda widoku w wierszu
  • Metoda instrukcji MERGE

Powiązane artykuły.

  • Instrukcja MERGE

Konfiguracja

Tabela DEST_TAB zawiera 10 000 wierszy. SOURCE_TAB zawiera 5000 wierszy, z których każdy ma pasującą wartość kluczową z wierszem z tabeli DEST_TAB, ale inne dane w CODE i DESCRIPTION kolumny.

W tym momencie nie widzimy żadnej wartości w DESCRIPTION w tabeli DEST_TAB zawiera słowo „Updated”.

SELECT COUNT(*)FROM dest_tabWHERE description LIKE "Updated%"; COUNT(*)---------- 0SQL>

Celem jest aktualizacja wiersze w tabeli DEST_TAB z danymi z tabeli SOURCE_TAB.

Metoda podzapytania

T Pierwszą opcją jest aktualizacja tabeli DEST_TAB przy użyciu podzapytania w celu pobrania poprawnych danych z tabeli SOURCE_TAB. Zwróć uwagę na predykat EXISTS wykluczający wiersze z tabeli DEST_TAB bez pasującego wiersza w SOURCE_TAB stół. Bez tego niedopasowane wiersze będą miały ustawione wartości NULL.

Plan wykonania dla bieżącego wolumenu danych jest pokazany poniżej.

Jeśli obciążenie jest wystarczająco duże, a serwer może poradzić sobie z dodatkowym obciążeniem, można użyć wskazówki PARALLEL, aby uruchomić to równolegle.

Metoda widoku w wierszu

Druga opcja polega na połączeniu dwóch tabel jako widoku inline i na tym oparciu aktualizacji.

Plan wykonania dla bieżącego wolumenu danych jest pokazany poniżej.

Jeśli obciążenie jest wystarczająco duże i serwer może poradzić sobie z dodatkowym obciążeniem, można użyć wskazówki PARALLEL, aby uruchomić to równolegle.

Liczbę zaktualizowanych wierszy można zmienić, dodając klauzula WHERE do widoku wbudowanego lub głównej instrukcji aktualizacji.

  • Instrukcja MERGE

Mam nadzieję, że pomaga. Pozdrawiam Tim …

Powrót na górę

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *