Articles

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_entry

customer_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_entry

customer_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í.