[ stash @ 30.01.2004. 11:42 ] @
Problem je sledeci:
1.0 Kada se u ovom slucaju SQL upit zada mySQL bazi direktno preko command line onda se izvrsi za 0,58 sec. To je OK.
2.0 Isti SQL upit, litmitiran na 2000 rekorda se u Exploreru(na web stranici) otvori momentalno ali na limitu od 6000 rekorda primetno je kasnjenje(7sec).
3.0 Dakle, sa povecanjem broja rekorda imam kasnjenje u ispisivanju istih na web stranici. Da li neko zna kako se moze povecati brzina ispisivanja velikog broja rekorda koje prosto selektujem iz baze u ovom slucaju?
U pitanju je najobicniji SELECT upit bez ikakvih uslova u njemu, dakle :
SELECT *FROM Tabela ORDER BY Neko_Polje

p.s. Indexiranje polja u bazi nije resenje jer (vidi pod 1.0).
[ noviKorisnik @ 30.01.2004. 14:07 ] @
Izmeri izvršavanje u PHP-u.

$tstamp0 = microtime ();
$res = mysql_query ('SELECT *FROM Tabela ORDER BY Neko_Polje');
$tstamp1 = microtime ();

Uz malo truda možeš dobiti razliku mikrosekundi između $tstamp1 i $tstamp0, što predstavlja vreme izvršavanja samog querija.

Možeš da meriš i druge stvari, recimo obradu dobijenog rezultata i pripremu za ispis. Vrti se petlja koja radi nešto 2000 ili 6000 puta, što deluje više kao mogući razlog kašnjenja.
[ stash @ 30.01.2004. 15:02 ] @
Hvala Dejane,
u pravu si, u pitanju je for petlja.
Stash
[ stash @ 05.02.2007. 15:46 ] @
Pronasao sam ovo posle toliko vremena i sa uzasom ukapirao da moram odmah da se ispravim.
Nije tacno da sama for petlja ubrzava ili usporava, bar u ovom slucaju.
Ovde je bilo nesto sasvim drugo i radilo se o tome da pri "ispucavanju" jednog SQL upita su se "ispucavala" bar jos dva-tri prosta i jedan prekomplikovan.

Resenje je bilo ukinuti ove suvisne korake pri SELECT a ostaviti ih za ostale tri akcije (insert, update i delete).

[ glavince @ 07.02.2007. 12:30 ] @
Treba da se stalno vodi racuna o optimizaciji koda.