Uppdateringar baserade på frågor
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Övrigt | PL / SQL | SQL | RAC | WebLogic | Linux
Hem ”Artiklar” Övrigt ”Här
Den här artikeln beskriver hur en tabell kan uppdateras med hjälp av data från en annan tabell.
- Inställning
- Underfrågemetod
- Inline View Method
- MERGE Statement Method
Relaterade artiklar.
- MERGE-uttalande
Inställning
DEST_TAB
-tabellen innehåller 10 000 rader. SOURCE_TAB
-tabellen innehåller 5000 rader, som alla har ett matchande nyckelvärde med en rad från DEST_TAB
-tabellen, men olika data i CODE
och DESCRIPTION
kolumner.
Vid denna punkt kan vi inte se något av värdena i DESCRIPTION
kolumn i tabellen DEST_TAB
innehåller ordet ”Uppdaterat”.
SELECT COUNT(*)FROM dest_tabWHERE description LIKE "Updated%"; COUNT(*)---------- 0SQL>
Målet är att uppdatera rader i tabellen DEST_TAB
med data från SOURCE_TAB
tabellen.
Underfrågemetod
T Det första alternativet är att göra en uppdatering av DEST_TAB
-tabellen med en underfråga för att hämta rätt data från SOURCE_TAB
-tabellen. Lägg märke till att EXISTS
predikat för att utesluta rader från DEST_TAB
-tabellen utan matchande rad i SOURCE_TAB
bord. Utan detta kommer de omatchade raderna att ha sina värden inställda på NULL.
Körningsplanen för den aktuella datavolymen visas nedan.
Om arbetsbelastningen är tillräckligt stor och servern kan hantera den extra arbetsbelastningen, PARALLEL
-tipsen kan användas för att göra denna körning parallellt.
Inline View Method
Det andra alternativet är att gå med i de två tabellerna som en integrerad vy och basera uppdateringen på den.
Körningsplanen för den aktuella datavolymen visas nedan.
Om arbetsbelastningen är tillräckligt stor och servern kan hantera den extra arbetsbelastningen, PARALLEL
-tipsen kan användas för att göra denna körning parallellt.
Antalet uppdaterade rader kan ändras genom att lägga till en WHERE
klausul till antingen inline-vyn eller huvuduppdateringsuttalandet.
- MERGE-uttalande
Hoppas det här hjälper. Hälsningar Tim …
Tillbaka till början.