在Query中获取MYSQL查询执行时间
Posted
技术标签:
【中文标题】在Query中获取MYSQL查询执行时间【英文标题】:To get MYSQL query execution time in Query 【发布时间】:2013-05-02 08:11:31 【问题描述】:我正在开发一个查询浏览器,使用一些大型数据库,我需要知道执行查询所花费的时间。
在 phpMYADMIN 中成功执行查询后,我可以看到时间。
分析或Showing rows 0 - 29 (2,000 total, Query took 0.0145 sec)
例如:分析
SELECT * FROM `larger_table`;
Status Time
starting 0.000026
checking permissions 0.000006
Opening tables 0.000014
System lock 0.000010
init 0.000022
optimizing 0.000004
statistics 0.000007
preparing 0.000005
executing 0.000001
Sending data 0.014138
end 0.000004
query end 0.000002
closing tables 0.000005
freeing items 0.000091
logging slow query 0.000003
cleaning up 0.000002
在查询浏览器中,我可以在浏览器窗口底部看到它所花费的时间。
那么在提交查询执行时如何获取查询的执行时间。
即当我给出以下查询时:
SELECT * FROM `larger_table`;
查询应该返回执行它的时间。
我应该在 PHP 中捕获并显示给用户。当用户在浏览器中执行一些查询时。
有什么方法可以查询提交查询的执行时间吗?
请检查我标记了预计时间的图像。
我发现了一些东西Check this
【问题讨论】:
【参考方案1】:请使用下面的代码
$sql_query = 'SELECT * FROM larger_table';
$msc = microtime(true);
mysql_query($sql_query);
$msc = microtime(true) - $msc;
echo $msc . ' seconds'; // in seconds
echo ($msc * 1000) . ' milliseconds'; // in millseconds
【讨论】:
嗨卡皮尔,感谢您的回复.. 但我问的是提交查询时执行查询所花费的时间.. 当我给 $mysql_query($sql_query);它应该返回执行所需的时间,而不是执行时... 在 Query 中获取 MYSQL 查询执行时间。我希望在查询本身而不是使用 PHP 查找时间。到底有没有? 您也可以在 sql 中通过获取当前时间并区分它们来执行此操作,但这不会返回正确的时间。 Kapils 解决方案是正确的解决方案。否则你应该看看这个serverfault.com/questions/32102/hidden-features-of-mysql 你不认为应该是echo $msc.' seconds'; // in MILLSECOND echo ($msc*1000).' milliseconds'; // in SECONDS
mysql_query()前面不需要美元符号。【参考方案2】:
看看下面 -
$sql_query='SELECT * FROM tablename';
$result = mysql_query($query);
$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.000121 秒内执行
【讨论】:
以上是关于在Query中获取MYSQL查询执行时间的主要内容,如果未能解决你的问题,请参考以下文章