Visa ett inlägg
Oläst 2009-08-18, 21:36 #13
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
Jag brukar använda PHP för att testa hur lång tid vissa queries tar att utföra samt hur lång tid det tar att läsa ut resultatet.

Skapa två funktioner i din kod som ser ut på följande sätt:

<?php

$timers = array();

function startTimer($ref="timer"){
global $timers;

$timers[$ref] = microtime(true);
}


function endTimer($ref="timer",$decimals=3){
global $timers;

if(!isset($timers[$ref])){
return 0;
}
$secs = (float) microtime(true) - $timers[$ref];
return round($secs,$decimals);
}
?>


Sen kan du ta reda på tidsåtgången för varje query/resultset genom att använda funktionerna på följande sätt:

<?php

startTimer("query1");
$query1 = mysql_query("SELECT * FROM .... WHERE ...");
print "query1 tog ".endTimer("query1")." sekunder att genomföra";



startTimer("query2");
$query2 = mysql_query("SELECT * FROM .... WHERE ...");
while($row = mysql_fetch_array($query2)){
......
}
print "query2 tog ".endTimer("query2")." sekunder att genomföra";

?>

Denna metod brukar ofta hjälpa mig att hitta ooptimerade queries.

Du kan ju givetvis ställa samma frågor direkt i MySQL-prompten och få reda på hur lång tid varje förfrågan tar. Men då blir det lite jobbigare om man vill testa tidsåtgången beroende på vilka villkor som ställs i varje query.

Jag tycker inte att 80 frågor låter mycket om du har 20-30 tabeller som datan hämtas från och som skall presenteras på samma sida.

Däremot så skulle du ju kunna kolla upp om en fråga ställs fler än en gång på samma sida. I såna fall så är det väl smartare att cacha resultatet i en array som du sedan kan återanvända.
objx är inte uppkopplad   Svara med citatSvara med citat