Oppdateringer basert på spørsmål

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

Hjem «Artikler» Diverse «her

Denne artikkelen beskriver hvordan en tabell kan oppdateres ved hjelp av data fra en annen tabell.

  • Oppsett
  • Spørringsmetode
  • Inline View Method
  • MERGE Statement Method

Relaterte artikler.

  • MERGE-erklæring

Oppsett

DEST_TAB -tabellen inneholder 10 000 rader. SOURCE_TAB tabellen inneholder 5000 rader, som hver har en matchende nøkkelverdi med en rad fra DEST_TAB tabellen, men forskjellige data i CODE og DESCRIPTION kolonner.

På dette punktet kan vi ikke se noen av verdiene i DESCRIPTION kolonne i DEST_TAB tabellen inneholder ordet «Oppdatert».

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

Målet er å oppdatere rader i DEST_TAB -tabellen med dataene fra SOURCE_TAB -tabellen.

Spørringsmetode

T det første alternativet er å gjøre en oppdatering av DEST_TAB -tabellen ved å bruke en underspørring for å hente de riktige dataene fra SOURCE_TAB -tabellen. Legg merke til EXISTS predikatet for å ekskludere rader fra DEST_TAB -tabellen uten samsvarende rad i SOURCE_TAB bord. Uten dette vil ikke-matchede radene ha verdiene satt til NULL.

Utførelsesplanen for det gjeldende datavolumet vises nedenfor.

Hvis arbeidsmengden er tilstrekkelig stor og serveren kan takle den ekstra arbeidsmengden, kan PARALLEL hint brukes til å gjøre dette kjøringen parallelt.

Inline View Method

Det andre alternativet er å koble til de to tabellene som en integrert visning og basere oppdateringen på den.

Utførelsesplanen for gjeldende datavolum er vist nedenfor.

Hvis arbeidsmengden er tilstrekkelig stor og serveren kan takle den ekstra arbeidsmengden, PARALLEL hint kan brukes til å gjøre dette løp parallelt.

Antall oppdaterte rader kan endres ved å legge til en WHERE klausul til enten den integrerte visningen eller hovedoppdateringsuttalelsen.

  • MERGE Statement

Håper dette hjelper. Hilsen Tim …

Tilbake til toppen.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *