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.