30. april 2009 - 23:04Der er
6 kommentarer og 1 løsning
Forespørgsel tager rigtig lang tid
Kære eksperter,
Jeg har en løkke der laver en sql-forespørgsel 15 gange - i alt tager scriptet rigtig lang tid (15 sek).
Når jeg kører de enkelte forespørgsler hver for sig, tager de ingen tid.
Har også afprøvet dem alle på én gang i phpmyadmin og det tager ingen tid.
Men i php-scriptet tager det 15 sekunder!
Jeg regner tiden ud således:
$time_start = get_microtime();
$sql = "min sql";
$result = mysql_query($sql, $db) or die (user_error("PROBLEMER MED DATABASEN: ".mysql_error()." SQL: ".$sql, E_USER_ERROR));
$time_end = get_microtime();
og tiden bliver således summeret op ($time_end - $time_start).
Kan databasen af en eller anden grund sætte en eller anden form for WAIT fra den ene sql til den næste?
Jeg forstår simpelthen ikke ovenstående. Andre tabeller har mange flere data og tager slet ikke så lang tid. Jeg har forsøgt at indexere på kolonnerne der står i where, men stadig uden held.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
time_ialt = 0 while (...){ timestart intet andet end querykald her imellem timestart og -slut timeslut
... andet kode
time_ialt += timeslut-timestart }
skriv time_ialt (skriver 15 sek + sekunddele til resten af koden)
Så jeg er vel 100% sikker på, at det er query-kaldet, det er galt med?
Det er for uoverskueligt at poste hele koden - den sidder på 3 php-sider, men jeg mener også at kunne konkludere at ovenstående er der, hvor problemet er.
Jeg har forsøgt at lave en explain på sql-koden, og det mindste tal (som helst skal være 1) er godt nok også ret stort (oppe i 500 mener jeg, jeg sidder desværre ikke på min egen pc lige nu). Det er nemlig ikke nøglen, som jeg hverken spørger på eller kan spørge på. Det er endda kun 2 tabeller, som bliver brugt, men der er forespurgt på 3 kolonner i "where".
Jeg kan prøve at vise databaseopbygningen, når jeg kommer på min egen pc.
Vil det hjælpe, eller kan nogen se, hvad det er ud fra ovenstående skrift?
Jeg har på fornemmelsen, at koden på en eller anden måde bliver sat på "vent" af databasen. Kan dette forekomme? Ellers kan jeg da udelukke det :) Men synes jeg stødte på det, da jeg først søgte på nettet, inden jeg postede herinde - men måtte opgive :(
Er i gang med at lukke alle åbne spørgsmål. Tak for alles deltagelse. Mvh Lone
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.