2011-03-11 59 views
12

有沒有辦法讓我可以得到MySQL查詢(特別是PHP)的時間?完成查詢所用的實際時間,即。查詢時間結果在MySQL w/PHP

某事如:結果1 - 10爲棕色。 (0.11秒)

我試圖尋找一個例子,無濟於事。這裏是我的代碼示例:

    // 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(); 

對於我當前使用MyISAM表引擎的全文搜索。任何幫助都會令人難以置信。謝謝。

+0

只需要提及的是,返回的時間是以秒爲單位,而不是微秒,因此一個例如0.0412356約爲二十五分之一秒,而不是4×10分之8。 – 2013-01-28 22:27:47

回答

37
$starttime = microtime(true); 

//Do your query and stuff here 

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

這會給你在微秒內的運行時間。

+0

太棒了!謝謝..我實際上有一個microtime(1)以上的查詢和查詢,但我甚至沒有考慮減法,部分,這是我需要的。萬分感謝! – 2011-03-11 02:44:40

+0

這個問題是,當我得到0.1作爲結果這意味着查詢運行0.000001秒這有點太快 – erdomester 2015-01-21 22:19:00

2

有兩種可能性我現在可以告訴你:

  • 包 - >使用microtime中(執行())和你自己衡量它,可能是類/函數內包裹整個「查詢」代碼段
  • 運行該查詢的EXPLAIN查詢並查看是否可以從返回的數據中讀取一些值

希望有所幫助。

+0

謝謝,它的確如此。是否給出了完成所花費的實際時間,或者只是估計需要花費的時間?另外,讓PHP處理它並創建一個計數器(比如上面提到的rayman)會花費更少的開銷嗎? – 2011-03-11 03:06:17

+1

PHP解決方案爲您提供完成此類任務所需的總時間,但SQL解決方案爲您準備準備好目標數據集時由數據庫使用的確切時間。 – 2011-03-13 20:12:45

4

這可能會幫助你

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) | 
+----------+----------+--------------------------+ 

問候