Opdateringer baseret på forespørgsler

8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Diverse | PL / SQL | SQL | RAC | WebLogic | Linux

Hjem “Artikler” Diverse “Her

Denne artikel beskriver, hvordan en tabel kan opdateres ved hjælp af data fra en anden tabel.

  • Opsætning
  • Underforespørgselsmetode
  • Integreret visningsmetode
  • FUSION-erklæringsmetode

Relaterede artikler.

  • FUSION-erklæring

Opsætning

DEST_TAB -tabellen indeholder 10.000 rækker. SOURCE_TAB -tabellen indeholder 5.000 rækker, som hver har en matchende nøgleværdi med en række fra DEST_TAB -tabellen, men forskellige data i CODE og DESCRIPTION kolonner.

På dette tidspunkt kan vi ikke se nogen af værdierne i DESCRIPTION kolonne i DEST_TAB -tabellen indeholder ordet “Opdateret”.

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

Målet er at opdatere rækker i tabellen DEST_TAB med data fra SOURCE_TAB -tabellen.

Metode til forespørgsel

T den første mulighed er at lave en opdatering af DEST_TAB -tabellen ved hjælp af en underforespørgsel for at hente de korrekte data fra SOURCE_TAB -tabellen. Bemærk EXISTS prædikatet for at ekskludere rækker fra DEST_TAB -tabellen uden nogen matchende række i SOURCE_TAB tabel. Uden dette vil de umatchede rækker have deres værdier sat til NULL.

Udførelsesplanen for den aktuelle datavolumen vises nedenfor.

Hvis arbejdsbelastningen er tilstrækkelig stor, og serveren kan klare den ekstra arbejdsbyrde, PARALLEL tip kan bruges til at gøre denne kørsel parallelt.

Inline View Method

Den anden mulighed er at forbinde de to tabeller som en integreret visning og basere opdateringen derpå.

Udførelsesplanen for den aktuelle datavolumen er vist nedenfor.

Hvis arbejdsbelastningen er tilstrækkelig stor og serveren kan klare den ekstra arbejdsbelastning, PARALLEL tip kan bruges til at gøre denne kørsel parallelt.

Antallet af opdaterede rækker kan ændres ved at tilføje en WHERE -klausul til enten den integrerede visning eller hovedopdateringserklæringen.

  • MERGE Statement

Håber dette hjælper. Hilsen Tim …

Tilbage til toppen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *