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ę