Articles

SQL WORLD

în articolul meu anterior am dat ideea despre modul de actualizare a înregistrărilor în sql. În acest articol aș dori să dau o idee detaliată despre modul de actualizare a volumului de înregistrări în baza de date Oracle cu mai multe exemple.Aș dori să dau exemple de actualizare în vrac a înregistrărilor în oracle one one table numit client și alt tabel numit companie.

care sunt diferitele moduri de a actualiza cea mai mare parte a înregistrărilor din oracle database?

există diferite metodologii pe care le folosim pentru a actualiza cea mai mare parte a înregistrărilor în oracle database. Aș dori să discut în detaliu următoarele moduri cu exemple din industria reală. Aceste exemple vă vor oferi o idee clară despre procesul de actualizare a oracle în detaliu.

ipoteze:

presupunem că există două tabele – informații despre clienți – care este numele clientului care vizitează site-ul de comerț electronic specificat. Există milioane de înregistrări în tabelul de client, dar suntem presupunând că există 999999 înregistrări în tabelul de client. Există un alt tabel numit Customer_Entry, care are, de asemenea, 777777 înregistrări. Cheia primară numită Customer_ID se află în ambele tabele.

tipuri de actualizări:

1.Actualizare folosind pentru buclă

2.Actualizare tradițională (actualizarea înregistrărilor individual)

3.Actualizare Bulk folosind BULK COLLECT și pentru toate declarația

4.Actualizare directă SQL

5.MERGE declarație pentru actualizări record rapid

6.Actualizați folosind metoda de vizualizare INLINE.

trebuie să executăm toate căile și trebuie să verificăm performanța e a diferitelor instrucțiuni de actualizare.

Scenariul 1 : Mod tradițional de a actualiza înregistrările individuale și comite după Pentru Buclă

începe
pentru cusrsor_1 în (selectați * de la client)
buclă
actualizare customer_entry
set
customer_no = cursor_1.customer_no,customer_name = cursor_1.customer_name, customer_product = c. customer_product unde
customer_id= c.customer_id;
End loop; commit;
end;
/

PL/procedura SQL finalizat cu succes.

scurs: 00:02:42.36

dacă puteți verifica primul exemplu în care încercăm să actualizăm toate înregistrările folosind For loop și apoi utilizați instrucțiunea commit. Dacă puteți executa blocul specific PL SQL. Este nevoie de aproximativ 2 minute și 42 de secunde pentru a finaliza procedura și pentru a actualiza înregistrările.

scenariul 2 : mod tradițional de a actualiza înregistrările individuale și comite în interiorul pentru buclă

începe
pentru cusrsor_1 în (selectați * de la client)
buclă
actualizare customer_entry
set
customer_no = cursor_1.customer_no,customer_name = cursor_1.customer_name, customer_product = c. customer_product unde
customer_id= c.customer_id;
commit;
End loop;
end;
/

PL/procedura SQL finalizat cu succes.

scurs: 00:03:58.39

dacă putem verifica procesul și calendarul pentru a executa înregistrările sau actualiza înregistrările în baza de date este de aproximativ 3 minute și 58 de secunde. Aici buclă va rula commit declarație după fiecare actualizare de înregistrare, astfel încât timpul pentru a actualiza înregistrarea este mai mare decât o singură înregistrare comite.

scenariul 3 : actualizare în bloc folosind colectarea în vrac și pentru toți

declara

tip customer_t este tabelul de client%rowtype index de

pls_integer; l_customer_data customer_t;

începe selectați *

vrac colecta în l_customer_data de la client;

forall rec în 1 .. l_customer_data.count

actualizare 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

unde R.customer_id= l_employee_data(rec).customer_id;

commit;

end;

procedura PL / SQL finalizată cu succes.

scurs: 00:00:53.55

metoda de colectare în vrac este metoda mai rapidă decât metodele tradiționale. Avem nevoie pentru a crea o variabilă de tip în cazul în care putem prelua toate datele de client și avem nevoie pentru a utiliza bulk collect declarație în clauza forall, astfel încât înregistrările din clauza forall sau tabelul specificat vor fi actualizate corect. Dacă putem vedea timpul scurs, este în jur de 54 de secunde, ceea ce este mai rapid decât alte metode.

4. Direct update SQL

begin

update customer_entry ent

set (customer_no, customer_name, customer_product) =

( selectați customer_no, customer_name, customer_product de la client C unde C.customer_id= ent.customer_id)

unde C.customer_id (selectați customer_id din client);

commit;

end;

procedura PL / SQL finalizată cu succes.

scurs: 00:00:58.22

actualizarea directă va dura 58 de secunde pentru a actualiza toate înregistrările. dacă putem compara că cu Vrac colecta a luat 3-4 secunde suplimentare pentru a actualiza toate înregistrările

scenariul 5 : MERGE declarație – cel mai rapid mod de a actualiza vrac de înregistrări

începe

merge în customer_entry er folosind

client c

Pe (er.customer_id = c. customer_id)

când se potrivește atunci

set de actualizare er.customer_number = c.customer_number,

er.cutomer_name= c. customer_name,

er.customer_product = c. customer_product;

commit;

end;

procedura PL / SQL finalizată cu succes.

scurs: 00:00:36.23

cel mai rapid mod de a actualiza cea mai mare parte a înregistrărilor este folosind instrucțiunea Merge. Declarația de îmbinare a durat 36 de secunde pentru a actualiza înregistrările în mod rapid.

scenariul 6: actualizare folosind metoda de vizualizare INLINE

începe

actualizare

(

selectați r.customer_id, r.customer_number, r.customer_name, r.customer_name, r.customer_product,

e.customer_number cnum, e.customer_name cname, e.customer_product cprod

de la customer_entry r, client e

unde R.customer_id= e.customer_id

) 9

set customer_number = cnum

customer_name= cname,

customer_product= cprod;

commit;

end;

procedura PL/SQL finalizată cu succes.

scurs: 00:00:37.97

cu ajutorul metodei de vizualizare inline, actualizarea în vrac se va finaliza aproximativ în 38 de secunde, ceea ce este, de asemenea, calea rapidă ca instrucțiunea Merge.

ce învățăm?

gândirea fiecărui dezvoltator SQL sau PLSQL este colectată în vrac și pentru toate declarațiile este mai bună pentru a face operațiuni în vrac. Dacă putem observa detaliile din interogările de mai sus 6 instrucțiunea actualizare SQL ar da o performanță mai bună decât colectarea în vrac și pentru toți. Deci, încercați să utilizați codul SQL în PL/SQL API pentru a face actualizare rapidă. Dar va varia de la scenariu la scenariu, astfel încât să puteți verifica întotdeauna scenariile. Dacă doriți cea mai rapidă performanță, încercați să scrieți declarația de îmbinare sau vizualizarea Inline.