Tweakers,
Ik ben bezig met een intranet waarop o.a. kmstanden berekend moeten worden. Nu heb ik 1 grote pagina waarin een arrays - van db queries - d.m.v. while loops doorlopen worden. Zie onderstaande voorbeeld.
Het probleem is nu dat de pagina enorm slecht performed. Ik heb al wat laadtijden per onderdeel verzameld en er zitten 2 stukken in die erg lang duren, resp. 7 en 22 seconden. Onderstaande stuk code duurt tussen de 6-7 om uit te voeren.
Ik heb een aantal indexen aangebracht, maar dat maakte niet veel verschil (maakt voor onderstaande code helemaal niets uit, omdat ik op basis van id's de tabel induik). Ik las ook ergens dat het nogal kan schelen als for i.p.v. while gebruikt, alleen met for ben ik niet zo bekend.
Maakt dit echt veel verschil en is het bijvoorbeeld mogelijk om m.b.v. een for loop een array )op basis van een selectie) te doorlopen?
Ik hoop dat jullie me wat tips kunnen geven over hoe ik onderstaande - en soortgelijke -code sneller kan maken.
Bedankt alvast!
Ik ben bezig met een intranet waarop o.a. kmstanden berekend moeten worden. Nu heb ik 1 grote pagina waarin een arrays - van db queries - d.m.v. while loops doorlopen worden. Zie onderstaande voorbeeld.
Het probleem is nu dat de pagina enorm slecht performed. Ik heb al wat laadtijden per onderdeel verzameld en er zitten 2 stukken in die erg lang duren, resp. 7 en 22 seconden. Onderstaande stuk code duurt tussen de 6-7 om uit te voeren.
Ik heb een aantal indexen aangebracht, maar dat maakte niet veel verschil (maakt voor onderstaande code helemaal niets uit, omdat ik op basis van id's de tabel induik). Ik las ook ergens dat het nogal kan schelen als for i.p.v. while gebruikt, alleen met for ben ik niet zo bekend.
Maakt dit echt veel verschil en is het bijvoorbeeld mogelijk om m.b.v. een for loop een array )op basis van een selectie) te doorlopen?
Ik hoop dat jullie me wat tips kunnen geven over hoe ik onderstaande - en soortgelijke -code sneller kan maken.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| $query_ritten = "SELECT rit_id, aantal_km FROM ritten WHERE auto_id = '$auto_id' AND aantal_km is not null ORDER BY datum, ritnr ASC"; $result = mysql_query($query_ritten); while($kmstanden = mysql_fetch_array($result)){ $eindstand = $beginstand + $kmstanden[aantal_km]; // de 1e keer is beginstand de in 1e instantie opgehaalde beginstand $query_update_kmstand = "UPDATE ritten SET beginstand = '$beginstand', eindstand = '$eindstand' WHERE rit_id = '$kmstanden[0]' AND auto_id = '$auto_id'"; $result3 = mysql_query($query_update_kmstand); $beginstand = $eindstand; // de eindstand wordt de beginstand voor de volgende rit } |
Bedankt alvast!