2009-10-27 37 views

Respuesta

29

MySQL tiene una builtin profiler. Puede habilitar el perfil emitiendo set profiling=1; y use show profiles; para obtener tiempos de ejecución.

+0

y MOSTRAR PERFIL; también –

+0

Esto es lo que estaba buscando gracias – mck89

+0

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

6

si usa PHP ... puede usar microtime() antes de la consulta y después de la consulta para averiguar cuánto tiempo le llevó a la consulta ejecutar.

$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

Esto no le dice cuánto tiempo tomó MySQL para ejecutar la consulta. Le dice cuánto tiempo tardó PHP en enviar la solicitud, esperar que se reciba y recibir el resultado. Se ralentizará por lo que sea que se esté ejecutando en el cliente PHP y si hay alguna latencia entre el cliente PHP y el servidor MySQL, los resultados serán más inexactos. –

+0

Obtengo resultados extraños de esto, a veces informa '2.15 s' para 8000 filas, otras veces informa' 1,503,023,491.52 s' para 6000 filas. Si aplico 'number_format ($ msc, 2)' entonces obtengo resultados extraños como números negativos. – Slam

5

Prueba esto ...

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

Esto está etiquetado como una pregunta de MySQL. No todos los que usan MySQL usan PHP. –

Cuestiones relacionadas