2009-10-27 28 views

Odpowiedz

29

mysql ma builtin profiler. Możesz włączyć profilowanie, wydając set profiling=1; i użyć show profiles;, aby uzyskać czasy wykonania.

+0

i POKAŻ PROFIL; też –

+0

To właśnie szukałem dzięki – mck89

+0

[ODRZUCONE !!] (http://dev.mysql.com/doc/refman/5.6/en/performance-schema.html) – bobobobo

6

jeśli używasz PHP .. możesz użyć microtime() przed zapytaniem i po zapytaniu, aby dowiedzieć się, ile czasu zajęło wykonanie kwerendy.

$sql_query='SELECT * FROM table'; 
$msc=microtime(true); 
$mysql_query($sql_query); 
$msc=microtime(true)-$msc; 
echo $msc.' seconds'; // in seconds 
echo ($msc*1000).' milliseconds'; // in millseconds 
+0

nie powiedzieć, jak długo to trwało MySQL do wykonania zapytania. Mówi ci, ile czasu zajęło PHP, aby wysłać żądanie, czekać na jego otrzymanie i otrzymać wynik. Zostanie spowolnione przez cokolwiek może być uruchomione na kliencie PHP i jeśli wystąpi opóźnienie między klientem PHP a serwerem MySQL, wyniki będą dalej niedokładne. –

+0

Dostaję z tego dziwne wyniki, czasami raportuje '2.15 s' dla 8000 wierszy, innym razem podaje' 1 503,023,491.52 s' dla 6000 wierszy. Jeśli zastosuję 'numer_format ($ msc, 2)', otrzymam wyniki zdarzeń nieznajomych, takie jak liczby ujemne. – Slam

5

Spróbuj tego ...

mysql_query("SET profiling = 1;"); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 

/* It goes without saying that this is your actual query that you want to measure the execution time of */ 
$query="SELECT some_field_name FROM some_table_name"; 
$result = mysql_query($query); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 

$exec_time_result=mysql_query("SELECT query_id, SUM(duration) FROM information_schema.profiling GROUP BY query_id ORDER BY query_id DESC LIMIT 1;"); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 
$exec_time_row = mysql_fetch_array($exec_time_result); 

echo "<p>Query executed in ".$exec_time_row[1].' seconds'; 
+0

Jest to otagowane jako pytanie MySQL. Nie wszyscy używający MySQL używają PHP. –

Powiązane problemy