Articles

SQL WORLD

előző cikkemben adtam az ötletet arról, hogyan lehet frissíteni a rekordokat az sql-ben. Ebben a cikkben szeretnék részletes képet adni arról, hogyan lehet frissíteni a rekordok nagy részét az Oracle adatbázisban több példával.Szeretném, hogy a példák a frissítés nagy részét rekordok oracle egy táblázat nevű ügyfél, illetve más táblázat nevű cég.

milyen különböző módokon frissítheti a rekordok nagy részét az oracle adatbázisban?

vannak különböző módszerek, amelyeket az oracle adatbázisban lévő rekordok nagy részének frissítésére használunk. A következő módokat szeretném részletesen megvitatni a valós iparági példákkal. Ezek a példák világos képet adnak az oracle frissítési folyamatáról részletesen.

feltételezések:

feltételezzük, hogy két táblázat van-ügyfélinformációk -, amely a megadott e-kereskedelmi webhelyre látogató ügyfél neve. Több millió rekord van az ügyféltáblázatban, de feltételezzük, hogy 999999 rekord van az ügyféltáblázatban. Van egy másik táblázat nevű Customer_Entry amely szintén 777777 rekordok. A Customer_ID nevű elsődleges kulcs mindkét táblában megtalálható.

frissítések típusai:

1.Frissítés segítségével hurok

2.Hagyományos frissítés (rekordok frissítése külön-külön)

3.Tömeges frissítés tömeges gyűjtéssel és minden

4.Közvetlen frissítés SQL

5.MERGE nyilatkozat frissítések rekord gyors

6.Frissítés INLINE nézet módszerrel.

minden módot végre kell hajtanunk, és ellenőriznünk kell a különböző frissítési utasítások e teljesítményét.

1. forgatókönyv : Hagyományos módon frissíteni az egyes rekordok és elkövetni után hurok

kezdődik
a cusrsor_1 a (select * ügyfél)
hurok
update customer_entry
set
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=C. customer_product ahol
customer_id = C.customer_id;
end loop; commit;
end;
/

PL/SQL eljárás sikeresen befejeződött.

: 00:02:42.36

Ha meg tudja nézni az első példát, ahol megpróbáljuk frissíteni az összes rekordot a hurok, majd a commit nyilatkozatot. Ha végre tudja hajtani az adott PL SQL blokkot. Az eljárás befejezéséhez és a rekordok frissítéséhez körülbelül 2 perc és 42 másodperc szükséges.

2. forgatókönyv: hagyományos módja annak, hogy frissítse az egyes rekordokat, és kötelezzék el magukat a hurok

kezdődik
a cusrsor_1 a (select * ügyfél)
hurok
update customer_entry
set
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=C. customer_product ahol
customer_id = C.customer_id;
commit;
end loop;
end;
/

PL/SQL eljárás sikeresen befejeződött.

eltelt: 00:03:58.39

ha tudjuk ellenőrizni a folyamat és az időzítés, hogy végre a rekordok vagy frissítse a rekordok adatbázisban ez körülbelül 3 perc 58 másodperc. Itt a hurok minden rekordfrissítés után futtatja a commit nyilatkozatot, így a rekord frissítésének ideje magasabb, mint az egyszeri commit rekord.

3 .forgatókönyv : tömeges frissítés tömeges gyűjtéssel és minden

deklarálja

típus customer_t táblázat ügyfél%rowtype index

pls_integer; l_customer_data customer_t;

start select *

tömeges gyűjtse be L_customer_data ügyfél;

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

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

commit;

end;

PL/SQL eljárás sikeresen befejeződött.

eltelt: 00:00:53.55

a tömeges gyűjtési módszer gyorsabb módszer, mint a hagyományos módszerek. Kérünk, hogy hozzon létre egy típusú változó, ahol tudunk lekérni az összes ügyfél adatait kell használni a tömeges gyűjteni nyilatkozatot mindazt, záradék, így a rekordok az mindazt, záradékot vagy a megadott táblázat frissül megfelelően. Ha látjuk az eltelt időt, akkor körülbelül 54 másodperc, ami gyorsabb, mint más módszerek.

4. Közvetlen frissítés SQL

begin

update customer_entry ent

set (customer_no, customer_name, customer_product) =

( válassza customer_no, customer_name, customer_product from customer C where C.customer_id= ent.customer_id)

ahol C. customer_id (válassza customer_id ügyfél);

commit;

vége;

PL/SQL eljárás sikeresen befejeződött.

: 00:00:58.22

a közvetlen frissítés 58 másodpercet vesz igénybe az összes rekord frissítéséhez. ha tudjuk összehasonlítani, hogy a tömeges gyűjteni tartott 3-4 másodperc extra, hogy frissítse az összes rekordot

Forgatókönyv 5 : MERGE NYILATKOZAT – a Leggyorsabb módja annak, hogy frissítse a tömeges rekordok

begin

egyesíteni customer_entry er használata

c ügyfél

(er.customer_id= c. customer_id)

ha kiegyenlített, akkor

update set er.customer_number= c.customer_number,

er.cutomer_name= c. customer_name,

er.customer_product= c. customer_product;

commit;

end;

PL/SQL eljárás sikeresen befejeződött.

eltelt: 00:00:36.23

a rekordok nagy részének frissítésének leggyorsabb módja az Egyesítési nyilatkozat használata. Az egyesítési nyilatkozat 36 másodpercet vett igénybe a rekordok gyors frissítéséhez.

6. forgatókönyv: frissítés INLINE nézet módszerrel

begin

update

(

válassza az r.customer_id, r.customer_number, r.customer_name, r.customer_product,

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

customer_entry r, customer e

ahol R.customer_id= e.customer_id

) 9

set customer_number = cnum

customer_name= cname,

customer_product= cprod;

commit;

end;

PL / SQL eljárás sikeresen befejeződött.

eltelt: 00:00:37.97

az inline view módszer használatával a tömeges frissítés körülbelül 38 másodperc alatt befejeződik, ami szintén a gyors módja, mint például az Egyesítési nyilatkozat.

mit tanulunk?

minden SQL vagy PLSQL Fejlesztő gondolkodása tömeges gyűjtés, minden kijelentés esetében jobb az ömlesztett műveletek elvégzéséhez. Ha megfigyelhetjük a fenti 6 lekérdezések részleteit, akkor az Update SQL utasítás jobb teljesítményt nyújt, mint a tömeges gyűjtés. Így próbálja használni az SQL kódot PL / SQL API csinálni gyors frissítés. De ez változik forgatókönyv forgatókönyv, így mindig ellenőrizze a forgatókönyvek. Ha azt szeretnénk, leggyorsabb teljesítmény próbálja írni merge nyilatkozatot vagy Inline nézet.