Articles

SQL WORLD

i min forrige artikkel har jeg gitt ideen om hvordan du oppdaterer postene i sql. I denne artikkelen vil jeg gjerne gi detaljert ide om måten å oppdatere mesteparten av poster I Oracle Database med flere eksempler.Jeg vil gjerne gi eksempler på oppdatering bulk av poster i oracle en en tabell Kalt Kunde Og annet bord kalt Selskap.

hva er forskjellige måter å oppdatere mesteparten av poster i oracle database?

Det finnes ulike metoder som vi bruker til å oppdatere mesteparten av poster i oracle database. Jeg vil gjerne diskutere følgende måter i detalj med virkelige bransjeeksempler. Disse eksemplene vil gi deg klar ide om oppdateringsprosessen til oracle i detalj.

Forutsetninger:

vi antar at det er to tabeller – Kundeinformasjon – som er navnet på kunden besøker angitt e handel nettsted. Det er millioner av poster i kundetabellen, men vi antar at det er 999999 poster i kundetabellen. Det er en annen tabell Som heter Customer_Entry som også har 777777 poster. Primærnøkkelen Kalt Customer_ID er i begge tabellene.

typer oppdateringer :

1.Oppdater ved hjelp av loop

2.Tradisjonell oppdatering (Oppdatere poster individuelt)

3.Masseoppdatering ved HJELP AV MASSEINNSAMLING og FOR alle setninger

4.DIREKTE OPPDATERING SQL

5.SLÅ Sammen Setning til oppdateringer posten rask

6.Oppdater VED HJELP AV INLINE view-metoden.

Vi må utføre alle måter og må sjekke e-ytelsen til de forskjellige oppdateringserklæringene.

Scenario 1 : Tradisjonell måte å oppdatere individuelle poster og forplikte etter for loop

begynn
for cusrsor_1 in (velg * fra kunde)
loop
oppdater customer_entry
sett
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product = c.customer_product hvor
customer_id = c. customer_id;
end loop; forplikte;
end;
/

pl/SQL prosedyren er fullført.

Forløpt: 00: 02: 42.36

hvis du kan sjekke det første eksemplet der vi prøver å oppdatere alle poster som bruker for loop og deretter bruke commit-setning. Hvis du kan utføre den spesifikke PL SQL-blokken. Det tar rundt 2 minutter og 42 sekunder å fullføre prosedyren og oppdatere postene.

Scenario 2 : Tradisjonell måte å oppdatere individuelle poster og forplikte inne for loop

begynn
for cusrsor_1 in (velg * fra kunde)
loop
oppdater customer_entry
sett
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=c.customer_product hvor
customer_id= c.customer_id;
forplikte;
end loop;
end;
/

pl/SQL-prosedyren er fullført.00: 03: 58.39

hvis vi kan sjekke prosessen og tidspunktet for å utføre postene eller oppdatere postene i databasen, er det omtrent 3 minutter og 58 sekunder. Here loop vil kjøre commit-setning etter hver postoppdatering, slik at tiden for å oppdatere posten er høyere enn enkelt commit-post.

declare

type customer_t er tabell av kunde%rowtype indeks av

pls_integer; l_customer_data customer_t;

begynn velg *

bulk samle inn i l_customer_data Fra Kunde;

FORALL rec i 1 .. l_customer_data.antall

oppdater customer_entry e sett e. customer_no= l_customer_data (rec).customer_no,

e. customer_name= l_employee_data(rec).e. customer_product= l_employee_data(rec).hvor r.customer_id= l_employee_data(rec).customer_id;

commit;

end;

pl / SQL-prosedyren er fullført.

Forløpt: 00: 00: 53.55

masseinnsamlingsmetoden er raskere enn tradisjonelle metoder. Vi krever å opprette en typevariabel der vi kan hente alle kundedata, og vi må bruke bulk collect-setning i forall-klausulen slik at postene i forall-klausulen eller angitt tabell oppdateres riktig. Hvis vi kan se Medgått tid, er det rundt 54 sekunder som er raskere enn andre metoder.

4. DIREKTE OPPDATERING SQL

start

oppdater customer_entry ent

sett (customer_no, customer_name, customer_product) =

( velg customer_no, customer_name, customer_product fra kunde c der c.customer_id= ent.customer_id)

hvor c.customer_id i (velg customer_id fra kunde);

forplikte;

slutt;

pl / SQL-prosedyren er fullført.

Forløpt: 00: 00: 58.22

den direkte oppdateringen tar 58 sekunder å oppdatere alle postene. hvis vi kan sammenligne det med bulk samle det tok 3-4 sekunder ekstra for å oppdatere alle poster

Scenario 5 : MERGE STATEMENT – Raskeste måten å oppdatere bulk av poster

begynn

slå sammen til customer_entry er ved hjelp av

kunde c

på (er.customer_id = c. customer_id)

når matchet så

oppdater sett er.kundenummer = c.kundenummer,

er.cutomer_name= c. kundenavn,

er.customer_product= c. customer_product;

forplikte;

slutt;

pl / SQL-prosedyren er fullført.

Forløpt: 00: 00: 36.23

den raskeste måten å oppdatere mesteparten av postene på, er Å bruke Sammenslåingserklæringen. Merge-setningen tok 36 sekunder å oppdatere poster på rask måte.

Scenario 6: OPPDATER MED Innebygd Visningsmetode

start

oppdater

(

velg r.customer_id, r.customer_number, r.customer_name, r.e.customer_number cnum, e.customer_name cname, e.customer_product cprod

fra customer_entry r, kunde e

hvor r.customer_id= e.customer_id

) 9

sett customer_number = cnum

customer_product= cprod;

forplikte;

slutt;

pl/sql-prosedyren er fullført.

Forløpt: 00: 00: 37.97

med bruk av inline view-metoden vil masseoppdateringen fullføre omtrent i 38 sekunder, som også er den raske Måten Som Merge-setningen.

hva lærer vi?

tanken på hver SQL eller PLSQL utvikler ER BULK SAMLE og FOR all uttalelse er bedre for å gjøre bulk operasjoner. Hvis vi kan observere detaljene i over 6 spørringer, Vil Oppdaterings SQL-setningen gi bedre ytelse enn Masseinnsamling og for alle. Så prøv Å bruke SQL-kode I PL / SQL API for å gjøre rask oppdatering. Men det vil variere scenario til scenario, slik at du alltid kan sjekke scenariene. Hvis du vil ha raskeste ytelse, kan du prøve å skrive merge-setning eller Innebygd visning.