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.
Leave a Reply