Articles

SQL wereld

in mijn vorige artikel heb ik het idee gegeven hoe de records in sql kunnen worden bijgewerkt. In dit artikel wil ik graag het gedetailleerde idee geven over de manier om het grootste deel van de records in Oracle-Database bij te werken met meerdere voorbeelden.Ik wil graag de voorbeelden van update bulk van records in Oracle een één tabel met de naam Klant en andere tabel met de naam Bedrijf geven.

wat zijn verschillende manieren om het grootste deel van records in de Oracle-database bij te werken?

Er zijn verschillende methodologieën die we gebruiken om de meeste records in de Oracle-database bij te werken. Ik wil graag de volgende manieren in detail bespreken met echte voorbeelden uit de industrie. Deze voorbeelden geven u een duidelijk idee over het updateproces van oracle in detail.

aannames:

We gaan ervan uit dat er twee tabellen zijn – klantinformatie – wat de naam is van de klant die een bezoek brengt aan de specifieke e commerce website. Er zijn miljoenen records in de klantentabel, maar we gaan ervan uit dat er 999999 records in de klantentabel. Er is nog een tabel genaamd Customer_Entry die ook 777777 records heeft. De primaire sleutel met de naam Customer_ID staat in beide tabellen.

soorten updates:

1.Bijwerken met lus

2.Traditionele update (afzonderlijk bijwerken van records)

3.Bulk update met behulp van BULK COLLECT en FOR ALL statement

4.SQL

direct bijwerken 5.Statement samenvoegen naar updates record fast

6.Update met behulp van INLINE view methode.

we moeten alle manieren uitvoeren en de e-prestaties van de verschillende update-statements controleren.

Scenario 1 : Traditionele manier om individuele records bij te werken en na te committen voor loop

begin
voor cusrsor_1 in (selecteer * van klant)
loop
update customer_entry
set
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product = c. customer_product waar
customer_id = c. customer_id;
End loop; commit;
end;
/

PL / SQL procedure succesvol voltooid.

verstreken: 00: 02: 42.36

als je het eerste voorbeeld kunt controleren waar we proberen alle records bij te werken met behulp van For loop en dan commit statement gebruiken. Als u het specifieke PL SQL-blok kunt uitvoeren. Het duurt ongeveer 2 minuten en 42 seconden om de procedure te voltooien en om de administratie bij te werken.

Scenario 2: traditionele manier om individuele records bij te werken en binnen te committen voor loop

begin
voor cusrsor_1 in (selecteer * van klant)
loop
update customer_entry
set
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product = c. customer_product waar
customer_id = c. customer_id;
commit;
End loop;
end;
/

PL/SQL procedure succesvol voltooid.

verstreken: 00: 03: 58.39

als we het proces en de timing kunnen controleren om de records uit te voeren of de records in de database bij te werken, is het ongeveer 3 minuten en 58 seconden. Hier zal loop commit statement draaien na elke record update, dus de tijd om de record te updaten is hoger dan een enkele commit record.

Scenario 3 : BULK-UPDATE met behulp van BULKCOLLECT en voor alle

declare

type customer_t is Tabel van customer%rowtype index by

pls_integer; l_customer_data customer_t;

begin select *

bulk collect into l_customer_data from customer;

forall REC in 1 .. l_customer_data.count

update customer_entry e set e.customer_no= l_customer_data (rec).customer_no,

e. customer_name= l_employee_data (rec).customer_name,

e. customer_product= l_employee_data (rec).customer_product

waarbij r. customer_id = l_employee_data (rec).customer_id;

commit;

end;

PL / SQL procedure succesvol voltooid.

verstreken: 00:00: 53.55

de methode voor bulkcollectie is sneller dan traditionele methoden. We moeten een type variabele maken waar we alle klantgegevens kunnen ophalen en we moeten bulk collect statement gebruiken in forall clausule zodat de records in de forall clausule of gespecificeerde tabel correct worden bijgewerkt. Als we de verstreken tijd kunnen zien is het ongeveer 54 seconden, wat sneller is dan andere methoden.

4. Directe UPDATE SQL

begin

update customer_entry ent

set (customer_no, customer_name, customer_product) =

( selecteer customer_no, customer_name, customer_product van customer c waar c.customer_id= ent.customer_id)

waarbij c. customer_id in (selecteer customer_id van klant);

commit;

end;

PL/SQL procedure succesvol voltooid.

verstreken: 00: 00: 58.22

de directe update duurt 58 seconden om alle records bij te werken. als we dat vergelijken met bulk verzamelen het duurde 3-4 seconden extra om alle records bijwerken

Scenario 5 : INSTRUCTIE SAMENVOEGEN – Snelste manier om de update bulk van records

begin

samenvoegen in customer_entry er met behulp van

klant c

op de (re.customer_id = c. customer_id)

wanneer overeen dan

update set er.customer_number = c.customer_number,

er.cutomer_name = c. customer_name,

er.customer_product = c. customer_product;

commit;

end;

PL / SQL procedure succesvol voltooid.

verstreken: 00:00: 36.23

de snelste manier om de meeste records bij te werken is met behulp van het Merge statement. Het merge statement duurde 36 seconden om records snel bij te werken.

Scenario 6: bijwerken met INLINE View methode

begin

update

(

select r.customer_id, r.customer_number, r. customer_name, r.customer_product,

e.k_id cnum, e.customer_name cname-e.customer_product cprod

van customer_entry r, de klant e

waar r.klant_id= e.customer_id

) 9

stel k_id = cnum

customer_name= cname,

customer_product= cprod;

commit;

end;

PL/SQL-procedure met succes is afgerond.

verstreken: 00:00: 37.97

met behulp van de inline view methode zal de bulk-update ongeveer in 38 seconden worden voltooid, wat ook de snelle manier is zoals Merge statement.

wat leren we?

Het denken van elke SQL of PLSQL ontwikkelaar is BULK COLLECT En FOR ALL statement is beter voor het doen van bulk operaties. Als we de details in bovenstaande 6 queries kunnen observeren, zou het SQL-statement van de Update de betere prestaties geven dan Bulk collect en voor iedereen. Dus probeer SQL-code te gebruiken in PL / SQL API om een snelle update te doen. Maar het zal van scenario tot scenario variëren, zodat u altijd de scenario ‘ s kunt controleren. Als je de snelste prestaties wilt, probeer dan een merge statement of Inline view te schrijven.