[ erekoz @ 10.11.2003. 22:47 ] @

Pozdrav svima,

Imam jedan problem pa ako neko ima ideju ili je vec radio nesto slicno moze da mi uputi sugestiju. Naime, u sklopu jednog programa treba se obaviti seldeca operacija : Postoji tabela ( MySQL ) koja moze da sadrzi od 300 pa preko 20000 zapisa. Polja u tabeli su artist,title,trajanje... Svako polje moze se ponoviti vise puta i obicno se ponavljaju. Ja treba na osnovu te tabele da napravim novu, koja ce sadrzati sve stavke ali bez ponavljanja + polje u kome pise koliko se data stavka puta pojavljuje u tabeli. Uradio sam to tako sto pocnem od prvog polja u tabeli, pa onda upit- Select count(title)... za to polje pa se to upisuje u novu tabelu i tako za svako polje. Sad to odradi posao i dobijem ono sta sam hteo, samo je stos u tome sto to radi previse sporo, a ponekad i program zakuca. Da li postoji nacin da se ovo odradi efikasnije?

Unapred zahvalan na svim sugestijama, erekoz
[ silverglider @ 10.11.2003. 23:53 ] @
Program ti verovatno puca zbog maksimalne data velicine sql upita koji je kod mysql-a po defaultu 1MB. Menja se na odredjenu velicinu sa "set-variable = max_allowed_packet=16M" u my.ini konfiguracionom fajlu mysql servera. Obrati paznju da je potrebno povecati max_allowed_packet i kod mysql server i mysql klijent strane (i mislim da za v3.23.xx bese 16MB maximum).

Da bi izbegao vece upite (tj one koji kao rezultat donose veci dataset) mozes da uradis sledece:
1. uradis SELECT DISTINCT nad pocetnom tabelom i od rezultata formiras novu tabelu
2. prodjes kroz tu tabelu i za svaki record uradis jedno "select count(*) from stara_tabela where artist_name = :Artist" i tu int vrednost upises u polje sa brojem pojavljivanja.
[ Vladimir_Ilic @ 12.11.2003. 13:41 ] @
Probaj nesto tipa:
Select Count(*), field1 from table group by field1

ovo ce da izbaci broj pojavljivanja razlicitih vrednosti za field1 :
100 value1
202 value2 ...