Updates op basis van zoekopdrachten
8i | 9i | 10 g | 11g | 12c | 13c | 18c | 19c | 21c | Diversen | PL / SQL | SQL | RAC | WebLogic | Linux
Home “Artikelen” Misc “hier
Dit artikel beschrijft hoe een tabel kan worden bijgewerkt met gegevens uit een andere tabel.
- Setup
- Subquery-methode
- Inline-weergavemethode
- MERGE-instructie-methode
Gerelateerde artikelen.
- MERGE-instructie
Setup
De DEST_TAB
-tabel bevat 10.000 rijen. De SOURCE_TAB
-tabel bevat 5000 rijen, die elk een overeenkomende sleutelwaarde hebben met een rij uit de DEST_TAB
-tabel, maar verschillende gegevens in de CODE
en DESCRIPTION
kolommen.
Op dit punt kunnen we geen van de waarden zien in de DESCRIPTION
kolom van de DEST_TAB
tabel bevat het woord “Updated”.
SELECT COUNT(*)FROM dest_tabWHERE description LIKE "Updated%"; COUNT(*)---------- 0SQL>
Het doel is om de rijen in de DEST_TAB
-tabel met de gegevens uit de SOURCE_TAB
-tabel.
Subquery-methode
T De eerste optie is om de tabel DEST_TAB
bij te werken met behulp van een subquery om de juiste gegevens uit de tabel SOURCE_TAB
te halen. Let op het predikaat EXISTS
om rijen uit de DEST_TAB
-tabel uit te sluiten zonder overeenkomende rij in de SOURCE_TAB
tafel. Zonder dit zullen de niet-overeenkomende rijen hun waarden hebben ingesteld op NULL.
Het uitvoeringsplan voor het huidige datavolume wordt hieronder getoond.
Als de werklast groot genoeg is en de server kan omgaan met de extra werklast, de PARALLEL
hint kan worden gebruikt om deze parallel te laten draaien.
Inline View-methode
De tweede optie is om de twee tabellen samen te voegen als een inline-weergave en de update daarop te baseren.
Het uitvoeringsplan voor het huidige datavolume wordt hieronder weergegeven.
Als de werklast voldoende groot is en de server kan omgaan met de extra werklast, de PARALLEL
hint kan worden gebruikt om dit parallel te laten draaien.
Het aantal bijgewerkte rijen kan worden gewijzigd door toe te voegen een WHERE
-clausule voor ofwel de inline-weergave of de belangrijkste update-instructie.
- MERGE-verklaring
Ik hoop dat dit helpt. Groeten Tim …
Terug naar de top.