我一直在搜索和搜索,但我找不到一个简单的方法来解决这个问题:
Query OK, 50000 rows affected (0.35 sec)
以毫秒或微秒为单位。
我怎样才能实现它?
答案 0 :(得分:1)
那个时间是由mysql监视器应用程序计算的,并不是由mysql服务器完成的。这不是你可以通过做(例如)select last_query_execution_time()
以编程方式检索的东西(这会很好)。
通过在调用查询函数之前和之后获取系统时间,您可以通过在应用程序中执行计时来粗略地模拟它。希望与mysql部分相比,客户端开销最小化。
答案 1 :(得分:1)
您可以在运行查询的代码中自行计时:
伪代码:
double StartTime = <now>
Execute SQL Query
double QueryTime = <now> - StartTime
答案 2 :(得分:1)
我遇到了同样的问题,我使用time
从Linux控制台进行了查询$ time mysql --user="user" -D "DataBase" -e "SELECT SQL_NO_CACHE COUNT(1) FROM table"
------------
count(1)
------------
750
------------
real 0m0.269s
user 0m0.014s
sys 0m0.015s
或
$ time -f"%e" mysql --user="user" -D "DataBase" -e "SELECT SQL_NO_CACHE COUNT(1) FROM table"
------------
count(1)
------------
750
------------
0.24
它提供了来自“mysql”的不同值,但至少是你可以使用的东西,例如这个脚本:
#!/bin
temp = 1
while [ $temp -le 1000]
do
/usr/bin/time -f"%e" -o"/home/admin/benchmark.txt" -a mysql --user="user" -D "DataBase" -e "SELECT SQL_NO_CACHE COUNT(1) FROM table" > /dev/null 2> /dev/null
let temp=$temp+1
done
执行查询1000次, -f 仅显示实时, -o 输出文件, -a 附加到输出,&gt; / dev / null 2&gt; / dev / null 忽略查询输出,因此每次都不会在控制台中打印。