Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Update query- sporo radi i zaglavi

[es] :: MySQL :: Update query- sporo radi i zaglavi

[ Pregleda: 2708 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mikes
Republika Srpska

Član broj: 32878
Poruke: 55
81.93.74.*



Profil

icon Update query- sporo radi i zaglavi05.04.2005. u 11:49 - pre 231 meseci
Zelim da u tabeli1 popunim polje2 sa podacima iz polja2 u tabeli2.
Koristim sledeci php skript:

$link = mysql_connect("localhost", "user", "lozinka")
or die("Could not connect");
mysql_select_db("baza") or die("Could not select database");

mysql_query("UPDATE tabela1 INNER JOIN tabela2 ON tabela1.polje1 = tabela2.polje1 SET tabela1.polje2=tabela2.polje2;") or die("Greska: ".mysql_error());


Medjutim, ovo UZASNO sporo radi, dugo radi i onda zaglavi tako da nikada nisam docekao kraj jer ga moram prekinuti.

Tabela1 ima oko 18.000 a tabela2 ima oko 6.000 zapisa, ako je to uopste bitno.

Pokusao sam sa dodavanjeme indexa na polja; pokusao sam sa zakljucavanjem baze - nije pomoglo.

Imate li iskustva sa ovim? Je li negdje greska i moze li se ista uciniti?
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: Update query- sporo radi i zaglavi05.04.2005. u 13:23 - pre 231 meseci
To verovatno nije nešto što mysql zna da optimizuje. Možda i može nešto da se uradi, ali dok se ne javi neko ko zna kako, evo mog predloga: indeksiraj obe kolone, uradi select i izvuci sve vrednosti iz tih kolona iz obe tabele (u tome je mysql super brz), i onda na nivou aplikacije vidi šta treba apdejtovati, pa konstruiši više update query-ja da to odrade.

Mada je stvarno sitna tabela, čudno je da oko toga pravi problem. :/
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.drenik.net.



+3 Profil

icon Re: Update query- sporo radi i zaglavi05.04.2005. u 22:13 - pre 231 meseci
Koja je verzija MySQL-a u pitanju?? Sumnjam da MySQL ne moze da optimizuje INNER JOIN pa i kada se nalazi u UPDATE naredbi. Da li su podignuti indexi na polje1 u obe tabele??
Owl
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at.

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Update query- sporo radi i zaglavi05.04.2005. u 22:36 - pre 231 meseci
Iz manuala:
Citat:
"Update statements are optimized as a SELECT query with the additional overhead of a write. The speed of the write depends on the amount of data being updated and the number of indexes that are updated. Indexes that are not changed does not get updated.

Also, another way to get fast updates is to delay updates and then do many updates in a row later. Doing many updates in a row is much quicker than doing one at a time if you lock the table.

Note that for a MyISAM table that uses dynamic record format, updating a record to a longer total length may split the record. If you do this often, it is very important to use OPTIMIZE TABLE occasionally. "


Jesi li pokusao odraditi EXPLAIN tog SELECT upita izvan UPDATE-a, mislim solo SELECT upit?
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

Mikes
Republika Srpska

Član broj: 32878
Poruke: 55
81.93.74.*



Profil

icon Re: Update query- sporo radi i zaglavi06.04.2005. u 07:16 - pre 231 meseci
RIJESIO SAM.

Hvala, pomogli ste mi.

Samo sam postavio indexe na polje1 u obje tabele i sada radi izuzetno brzo.

Moja je greska bila sto sam umjesto da indexiram polje1 indexirao polje2 u obje tabele (glupan) i nije bilo nikakvog efekta.
 
Odgovor na temu

[es] :: MySQL :: Update query- sporo radi i zaglavi

[ Pregleda: 2708 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.