2011-03-11 15 views
12

¿Hay alguna manera de obtener el tiempo de una consulta MySQL (específicamente con PHP)? El tiempo real que tardó en completar la consulta, es decir.Resultado del tiempo de consulta en MySQL con PHP

Algo así como: Resultados 1 - 10 para marrón. (0.11 segundos)

Traté de buscar un ejemplo, fue en vano. Aquí está un ejemplo de mi código:

    // prepare sql statement 
       $stmt = $dbh->prepare("SELECT ijl, description, source, user_id, timestamp FROM Submissions WHERE MATCH (ijl, description) AGAINST (?)"); 

       // bind parameters 
       $stmt->bindParam(1, $search, PDO::PARAM_STR); 

       // execute prepared statement 
       $stmt->execute(); 

Por mi búsqueda de texto completo actual mediante un motor de tabla MyISAM. Cualquier ayuda sería increíble. Gracias.

+0

Solo mencione que el tiempo devuelto se expresa en unidades de segundos, no en microsegundos, por lo que una cifra de p. Ej. 0.0412356 es alrededor de un vigésimo quinto de segundo, no 4 x 10 exp -8. –

Respuesta

37
$starttime = microtime(true); 

//Do your query and stuff here 

$endtime = microtime(true); 
$duration = $endtime - $starttime; //calculates total time taken 

Esto le dará el tiempo de ejecución en microsegundos.

+0

¡Impresionante! Gracias ... En realidad tenía un microtime (1) encima de la consulta y debajo de la consulta, pero ni siquiera pensé en la resta, porción, que es lo que necesitaba. ¡Gracias una tonelada! –

+0

El problema con esto es que cuando obtengo 0.1 como resultado esto significa que la consulta se ejecutó durante 0.000001 segundos, que es un poco demasiado rápido – erdomester

2

Hay dos posibilidades que puedo decir ahora:

  • envoltura -> ejecutar() con microtime() y medir usted mismo, posiblemente envolviendo todo "consulta" fragmento de código dentro de una clase/función
  • ejecute la consulta EXPLAIN de esa consulta y vea si puede leer algunos valores de los datos devueltos

Espero que ayude.

+0

Gracias, lo hace. ¿Explica EXPLAIN el tiempo real que tomó completar o solo una estimación de lo que tomará? Además, ¿sería menos sobrecarga dejar PHP manejar y hacer un contador (como rayman sugirió anteriormente)? –

+1

Las soluciones de PHP le brindan el tiempo total que le tomó completar tal tarea, pero la solución de SQL le proporciona el tiempo exacto que consumió la base de datos mientras preparaba el conjunto de datos de destino. –

4

esto puede ayudarle a

http://dev.mysql.com/doc/refman/5.0/en/show-profile.html

mysql> SET profiling = 1; 
Query OK, 0 rows affected (0.00 sec) 

mysql> DROP TABLE IF EXISTS t1; 
Query OK, 0 rows affected, 1 warning (0.00 sec) 

mysql> CREATE TABLE T1 (id INT); 
Query OK, 0 rows affected (0.01 sec) 

mysql> SHOW PROFILES; 
+----------+----------+--------------------------+ 
| Query_ID | Duration | Query     | 
+----------+----------+--------------------------+ 
|  0 | 0.000088 | SET PROFILING = 1  | 
|  1 | 0.000136 | DROP TABLE IF EXISTS t1 | 
|  2 | 0.011947 | CREATE TABLE t1 (id INT) | 
+----------+----------+--------------------------+ 

saludos

Cuestiones relacionadas