2009-10-27 50 views

Trả lời

29

mysql có builtin profiler. Bạn có thể bật lược tả bằng cách phát hành set profiling=1; và sử dụng show profiles; để nhận thời gian thực hiện.

+0

và SHOW PROFILE; quá –

+0

Đây là những gì tôi đang tìm kiếm cảm ơn – mck89

+0

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

6

nếu sử dụng PHP .. bạn có thể sử dụng microtime() trước truy vấn và sau truy vấn để tìm ra thời gian thực hiện truy vấn.

$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

này không cho bạn biết mất bao lâu MySQL để thực hiện truy vấn. Nó cho bạn biết phải mất bao lâu để PHP gửi yêu cầu, đợi cho nó được nhận, và để nhận kết quả. Nó sẽ bị chậm lại bởi bất cứ điều gì có thể chạy trên máy khách PHP và nếu có bất kỳ độ trễ nào giữa máy khách PHP và máy chủ MySQL, kết quả sẽ không chính xác nữa. –

+0

Tôi nhận được kết quả lạ từ điều này, đôi khi nó báo cáo '2,15 s' cho 8000 hàng, thời gian khác báo cáo' 1,503,023,491,52 s' cho 6000 hàng. Nếu tôi áp dụng 'number_format ($ msc, 2)' thì tôi nhận được kết quả sự kiện lạ như số âm. – Slam

5

Hãy thử này ...

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

Điều này được gắn thẻ dưới dạng câu hỏi MySQL. Không phải ai cũng sử dụng MySQL đều sử dụng PHP. –

Các vấn đề liên quan