MySQL niet genoeg tijd

Gestart doorTimkb4 reacties27 weergaven

5 berichten · pagina 1 van 1

Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hoi,

Ik heb een database met +/- 5000 entries nu probeer ik met de code hieronder het veld totaal bij elkaar op te tellen. Maar naar 30 seconde kapt hij er mee en geeft hij aan dat de executie tijd te lang is. Hoe ga ik dit oplossen en snel houden (caching natuurlijk maar dan moet hij het wel eerst doen)

$i = 0;
while($row = mysql_fetch_array(mysql_query("SELECT totaal FROM gebruikers"))){
    $i = $i+$row[totaal];
}
0
Berichten
13.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Met de code die jij nu geeft voert hij die query steeds opnieuw uit, dus pakt hij constant de eerste rij en telt die bij elkaar op. Hij blijft dus oneindig doorgaan.

Het beste wat je kunt doen is gewoon het resultaat van de volgende query gebruiken:

SELECT SUM(totaal) AS total FROM gebruikers
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Sjoerd schreef:
Met de code die jij nu geeft voert hij die query steeds opnieuw uit, dus pakt hij constant de eerste rij en telt die bij elkaar op. Hij blijft dus oneindig doorgaan.

Het beste wat je kunt doen is gewoon het resultaat van de volgende query gebruiken:

SELECT SUM(totaal) AS total FROM gebruikers
Ik dacht al dat er een efficiëntere manier moest zijn, bedankt!

Edit: Ook deze manier komt boven het maximum van 30 seconde uit of heb ik de query nu verkeerd?

while($row = mysql_fetch_array(mysql_query("SELECT SUM(totaal) AS total FROM gebruikers"))){
    $i = $row[total];
}
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Timmie schreef:
Eerdere citaten tonen
Sjoerd schreef:
Met de code die jij nu geeft voert hij die query steeds opnieuw uit, dus pakt hij constant de eerste rij en telt die bij elkaar op. Hij blijft dus oneindig doorgaan.
Het beste wat je kunt doen is gewoon het resultaat van de volgende query gebruiken:

SELECT SUM(totaal) AS total FROM gebruikers

Ik dacht al dat er een efficiëntere manier moest zijn, bedankt!

Edit: Ook deze manier komt boven het maximum van 30 seconde uit of heb ik de query nu verkeerd?

while($row = mysql_fetch_array(mysql_query("SELECT SUM(totaal) AS total FROM gebruikers"))){
    $i = $row[total];
}

Je hebt hem verkeerd jah. Gebruik ipv mysql_fetch_array een _assoc

toevoeging op 22 april 2012, 221532:
En aangezien je maar 1 resultaat zal terugkrijgen is een while overbodig. Ik hoop trouwens ook dat je een foutafhandeling hebt.
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
assoc is de oplossing niet maar nu je het zegt die while is het probleem want dan doet hij alsnog al die 5000 queries. En ja maar als de maximale executie tijd overschreden is krijg je een internal server error (500) uberhoud zou ik geen error krijgen aangezien de query gewoon goed is.

Hij doet het nu.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren