SQL
V mém předchozím článku jsem dal představu o tom, jak aktualizovat záznamy v sql. V tomto článku bych chtěl poskytnout podrobnou představu o způsobu aktualizace většiny záznamů v databázi Oracle s několika příklady.Rád bych uvedl příklady aktualizace většiny záznamů v oracle one one table s názvem zákazník a další tabulka s názvem Společnost.
jaké jsou různé způsoby aktualizace většiny záznamů v databázi oracle?
existují různé metodiky, které používáme k aktualizaci většiny záznamů v databázi oracle. Chtěl bych podrobně diskutovat o následujících způsobech s příklady z reálného života. Tyto příklady vám poskytnou jasnou představu o procesu aktualizace oracle podrobně.
předpoklady:
předpokládáme, že existují dvě tabulky-informace o zákaznících – což je název zákazníka, který navštíví zadaný web elektronického obchodování. V tabulce zákazníků jsou miliony záznamů, ale předpokládáme, že v tabulce zákazníků je 999999 záznamů. Existuje další tabulka s názvem Customer_Entry, která má také záznamy 7777777. Primární klíč s názvem Customer_ID je v obou tabulkách.
typy aktualizací:
1.Aktualizace pomocí pro smyčku
2.Tradiční aktualizace (aktualizace záznamů jednotlivě)
3.Hromadná aktualizace pomocí BULK COLLECT a pro všechny příkazy
4.Přímá aktualizace SQL
5.Sloučit příkaz k aktualizacím záznam rychle
6.Aktualizace pomocí metody INLINE view.
musíme provést všechny způsoby a je třeba zkontrolovat výkon e různých aktualizačních příkazů.
Scénář 1 : Tradiční způsob, jak aktualizovat jednotlivé záznamy a zavázat se po pro smyčce
begin
pro cusrsor_1 in (select * from zákazník)
loop
aktualizace customer_entrycustomer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=c.customer_product, kde
zákazník_id= c.zákazník_id;
end loop; commit;
end;
/PL/SQL procedura úspěšně dokončena.
uplynulo: 00: 02: 42.36
Pokud můžete zkontrolovat první příklad, kde se snažíme aktualizovat všechny záznamy pomocí for loop a poté použít příkaz commit. Pokud můžete spustit konkrétní blok PL SQL. Dokončení postupu a aktualizace záznamů trvá přibližně 2 minuty a 42 sekund.
Scénář 2 : Tradiční způsob, jak aktualizovat jednotlivé záznamy a zavázat uvnitř pro smyčky
begin
pro cusrsor_1 in (select * from zákazník)
loop
aktualizace customer_entrycustomer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=c.customer_product, kde
zákazník_id= c.zákazník_id;
commit;
end loop;
end;
/PL/SQL procedura úspěšně dokončena.
Uplynulý: 00:03:58.39,
Pokud můžeme kontrolovat proces a načasování provedení záznamů nebo aktualizovat záznamy v databázi je přibližně 3 minuty a 58 sekund. Zde smyčka spustí příkaz odevzdání po každé aktualizaci záznamu, takže čas na aktualizaci záznamu je vyšší než jediný záznam odevzdání.
Scénář 3 : HROMADNÉ AKTUALIZACE pomocí HROMADNÉHO SBÍRAT a PRO VŠECHNY
prohlásit,
typ customer_t je tabulka Zákaznický%rowtype index,
pls_integer; l_customer_data customer_t;
begin Select *
hromadné sbírat do l_customer_data od Zákazníků;
forall rec v 1 .. l_customer_data.počet
aktualizace customer_entry e nastavit e.customer_no= l_customer_data(rec).customer_no,
e. customer_name= l_employe_data(rec).customer_name,
e. customer_product= l_employe_data(rec).customer_product
kde r. customer_id= l_employe_data(rec).customer_id;
commit;
end;
PL/SQL procedura úspěšně dokončena.
Uplynulý: 00:00:53.55,
hromadné sbírat metoda je rychlejší způsob, než tradiční metody. Požadujeme, aby vytvořit proměnnou typu, kde můžeme načíst všechna data zákazníků a musíme použít hromadně sbírat prohlášení v forall ustanovení tak, že záznamy v forall doložky nebo uvedené tabulky budou aktualizovány správně. Pokud vidíme uplynulý čas, je to kolem 54 sekund, což je rychlejší než jiné metody.
4. PŘÍMÉ AKTUALIZACE SQL
begin
aktualizace customer_entry ent
sada (customer_no, customer_name, customer_product) =,
( vyberte customer_no, customer_name, customer_product od zákazníka, c, kde c.zákazník_id= ent.zákazník_id )
kde c.zákazník_id v (vyberte dvě od zákazníka);
zavázat se;
end;
PL/SQL procedura úspěšně dokončena.
uplynulo: 00: 00: 58.22
přímá aktualizace bude trvat 58 sekund k aktualizaci všech záznamů. pokud můžeme porovnat s hromadně sbírat trvalo 3-4 sekund navíc k aktualizaci všech záznamů
Scénář 5 : SLOUČIT PROHLÁŠENÍ – Nejrychlejší způsob, jak aktualizovat hromadně záznamů
begin
sloučit do customer_entry er pomocí
zákazník c
na (er.customer_id= c. customer_id)
při shodě pak
update set er.číslo_zákazníka= c.customer_number,
er.cutomer_name= c. customer_name,
er.customer_product= c. customer_product;
commit;
end;
PL/SQL procedura úspěšně dokončena.
uplynulo: 00: 00: 36.23
nejrychlejší způsob, jak aktualizovat většinu záznamů, je použití příkazu sloučení. Příkaz sloučení trvalo 36 sekund, než se záznamy rychle aktualizovaly.
Scénář 6 :AKTUALIZACE pomocí INLINE View Způsob,
begin
aktualizovat
(
vyberte r.zákazník_id, r.číslo_zákazníka, r.customer_name, r.customer_product,
e.číslo_zákazníka cnum, e.customer_name cname, e.customer_product cprod
z customer_entry r, zákazník e
, kde r.zákazník_id= e.dvě
) 9
nastavena číslo_zákazníka = cnum
customer_name= cname,
customer_product= cprod;
zavázat se;
end;
PL/SQL procedura úspěšně dokončena.
Uplynulý: 00:00:37.97,
S pomocí inline zobrazení metoda hromadné aktualizace bude dokončena přibližně za 38 sekund, což je také rychlý způsob, jako je Sloučení prohlášení.
co se učíme?
myšlení každého SQL nebo PLSQL vývojáře je hromadný COLLECT a pro všechny příkazy je lepší dělat hromadné operace. Pokud můžeme pozorovat podrobnosti ve výše uvedených dotazech 6, příkaz Update SQL by poskytoval lepší výkon než hromadný sběr a pro všechny. Zkuste tedy použít SQL kód v PL / SQL API k rychlé aktualizaci. Ale to se bude lišit scénář ke scénáři, takže můžete vždy zkontrolovat scénáře. Pokud chcete nejrychlejší výkon, zkuste napsat příkaz sloučení nebo Inline zobrazení.
Leave a Reply