SV verden
i min tidligere artikel har jeg givet ideen om, hvordan du opdaterer posterne i sv. I denne artikel vil jeg gerne give den detaljerede ide om måden at opdatere hovedparten af poster i Oracle Database med flere eksempler.Jeg vil gerne give eksemplerne på opdatering hovedparten af poster i oracle one One table navngivet kunde og anden tabel navngivet firma.
hvad er forskellige måder at opdatere hovedparten af poster i oracle database?
der er forskellige metoder, som vi bruger til at opdatere hovedparten af poster i oracle database. Jeg vil gerne diskutere følgende måder i detaljer med eksempler på det virkelige liv. Disse eksempler giver dig en klar ide om opdateringsprocessen for oracle i detaljer.
antagelser:
Vi antager, at der er to tabeller – kundeoplysninger – som er navnet på kunden besøger specificeret e-handel hjemmeside. Der er millioner af poster i kundetabellen, men vi antager, at der er 999999 poster i kundetabellen. Der er en anden tabel ved navn Customer_Entry, som også har 777777 poster. Den primære nøgle med navnet Customer_ID findes i begge tabeller.
typer af opdateringer:
1.Opdatering ved hjælp af loop
2.Traditionel opdatering (Opdatering af poster individuelt)
3.Bulk opdatering ved hjælp af BULK COLLECT og for alle udsagn
4.Direkte opdatering SL
5.Flet erklæring til opdateringer Optag hurtigt
6.Opdater ved hjælp af inline visningsmetode.
Vi er nødt til at udføre alle måder og har brug for at kontrollere e-ydeevnen for de forskellige opdateringserklæringer.
Scenarie 1 : Traditionel måde at opdatere individuelle poster og begå efter for loop
begynd
for cusrsor_1 i (vælg * fra kunde)
loop
Opdater customer_entry
set
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; commit;
end;
/pl/SL-proceduren er fuldført.
forløbet: 00: 02: 42.36
Hvis du kan kontrollere det første eksempel, hvor vi forsøger at opdatere alle poster ved hjælp af loop og derefter bruge commit-erklæring. Hvis du kan udføre den specifikke pl-blok. Det tager omkring 2 minutter og 42 sekunder at fuldføre proceduren og opdatere posterne.
Scenario 2: traditionel måde at opdatere individuelle poster og begå inde for loop
begynd
for cusrsor_1 i (vælg * fra kunde)
loop
Opdater customer_entry
set
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=c. customer_product hvor
customer_id= c.customer_id;
commit;
end loop;
end;
/pl/KVL procedure fuldført.
forløbet: 00: 03: 58.39
Hvis vi kan kontrollere processen og timingen for at udføre posterne eller opdatere posterne i databasen, er det cirka 3 minutter og 58 sekunder. Her kører loop commit-erklæring efter hver postopdatering, så tiden til at opdatere posten er højere end single commit record.
Scenario 3 : BULKOPDATERING ved hjælp af BULKINDSAMLING og for alle
erklære
type customer_t er tabel over kunde%rækketype indeks ved
pls_integer; l_customer_data customer_t;
begynd vælg *
bulk indsamle i l_customer_data fra kunden;
for alle Rec i 1 .. l_customer_data.tæl
Opdater customer_entry e sæt e. customer_no= l_customer_data (rec).customer_no,
e. customer_name= l_ employee_data (rec).kundenavn,
e. kundeprodukt= l_ employee_data (rec).customer_product
hvor r. customer_id= l_ employee_data (rec).customer_id;
commit;
end;
pl / KVL-proceduren er fuldført.
forløbet: 00: 00: 53.55
bulkindsamlingsmetoden er hurtigere metode end traditionelle metoder. Vi kræver at oprette en typevariabel, hvor vi kan hente alle kundedata, og vi er nødt til at bruge bulk collect-erklæring i forall-klausul, så posterne i forall-klausulen eller den angivne tabel opdateres korrekt. Hvis vi kan se den forløbne tid, er det omkring 54 sekunder, hvilket er hurtigere end andre metoder.
4.
begynd
Opdater customer_entry ent
sæt (customer_no, customer_name, customer_product) =
( vælg customer_no, customer_name, customer_product fra customer c hvor C.customer_id= ent.customer_id)
hvor C.customer_id i (Vælg customer_id fra kunde);
commit;
end;
pl / KVL-procedure fuldført.
forløbet: 00: 00: 58.22
den direkte opdatering tager 58 sekunder at opdatere alle poster. hvis vi kan sammenligne det med bulk collect, tog det 3-4 sekunder ekstra at opdatere alle poster
Scenario 5 : Flet erklæring – hurtigste måde at opdatere hovedparten af poster
begynd
Flet til customer_entry er ved hjælp af
kunde c
On (er.customer_id= c. customer_id)
Når matchet derefter
Opdater sæt er.kundenummer= c.kundenummer,
er.cutomer_name= c. customer_name,
er.customer_product= c. customer_product;
commit;
end;
pl / KVL-proceduren er fuldført.
forløbet: 00: 00: 36.23
den hurtigste måde at opdatere hovedparten af poster bruger Fletningsopgørelsen. Fletningserklæringen Tog 36 sekunder at opdatere poster på hurtig måde.
Scenario 6: opdatering ved hjælp af Inline visningsmetode
begynd
Opdater
(
vælg r.customer_id, r.customer_number, r.customer_name, r.customer_product,
e.customer_number cnum, e.customer_name cname, e.customer_product cprod
fra customer_entry r, customer e
hvor R.customer_id= e.customer_id
) 9
Indstil customer_number = cnum
customer_name= cname,
customer_product= cprod;
commit;
end;
pl/KVL-proceduren er fuldført.
forløbet: 00: 00: 37.97
Ved brug af inline-visningsmetoden afsluttes bulkopdateringen cirka på 38 sekunder, hvilket også er den hurtige måde som Fletningsopgørelse.
Hvad lærer vi?
tanken om enhver udvikler er BULK COLLECT, og for alle udsagn er det bedre at udføre bulkoperationer. Hvis vi kan observere detaljerne i ovenstående 6 forespørgsler, vil Opdateringsekspeditionen give den bedre ydelse end Bulk collect og for alle. Så prøv at bruge kode i PL/API til at gøre hurtig opdatering. Men det vil variere scenario til scenario, så du altid kan kontrollere scenarierne. Hvis du vil have den hurtigste ydeevne, skal du prøve at skrive fletteerklæring eller Inline-visning.
Leave a Reply