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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *