2009-10-27 11 views

Antwort

29

mysql hat eine builtin profiler. Sie können Profiling aktivieren, indem Sie set profiling=1; ausgeben und show profiles; verwenden, um Ausführungszeiten zu erhalten.

+0

und SHOW PROFILE; too –

+0

Dies ist, was ich gesucht habe danke – mck89

+0

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

6

Wenn Sie PHP verwenden, können Sie vor der Abfrage und nach der Abfrage microtime() verwenden, um herauszufinden, wie lange die Ausführung der Abfrage dauerte.

$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

Dies gilt nicht sagen, wie lange es MySQL die Abfrage auszuführen hat. Es zeigt Ihnen, wie lange es dauerte, bis PHP die Anfrage gesendet hat, auf den Empfang der Anfrage gewartet und das Ergebnis erhalten hat. Es wird durch alles verzögert, was auf dem PHP-Client läuft, und wenn es eine Verzögerung zwischen dem PHP-Client und dem MySQL-Server gibt, werden die Ergebnisse noch ungenauer. –

+0

Ich bekomme seltsame Ergebnisse, manchmal meldet es '2,15 s' für 8000 Zeilen, andere Male berichtet' 1,503,023,491.52 s' für 6000 Zeilen. Wenn ich 'number_format ($ msc, 2)' anwende, dann erhalte ich Ereignisse wie negative Zahlen. – Slam

5

Try this ...

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

Dies wird als MySQL-Frage markiert. Nicht jeder, der MySQL benutzt, benutzt PHP. –