如何在mysql命令行中看到高精度查询时间?

Ben*_*nee 16 mysql precision timer command-line-interface

我正在完成一些优化工作,我注意到在一些mysql转储中人们发表文章和问题(现在我实际上找不到了),有高精度执行时间(0.05985215秒)而不是0.06秒).

如何在命令行上查看这些更精确的查询时间?

编辑

这样的例子是:

+----------+
| COUNT(*) |
+----------+
| 11596    |
+----------+
1 row in set (0.05894344 sec)
Run Code Online (Sandbox Code Playgroud)

使用分析使我成为那里的一部分,但产生的输出太长,我必须记住启用它.我只是在寻找一个简单的高精度持续时间.

SET profiling = 1;
<query>
SHOW PROFILES;
Run Code Online (Sandbox Code Playgroud)

给我这样的东西:

+----------------------+-----------+
| Status               | Duration  |
+----------------------+-----------+
| (initialization)     | 0.000005  |
| checking permissions | 0.00001   |
| Opening tables       | 0.000499  |
| Table lock           | 0.000071  |
| preparing            | 0.000018  |
| Creating tmp table   | 0.00002   |
| executing            | 0.000006  |
| Copying to tmp table | 6.565327  |
| Sorting result       | 0.000431  |
| Sending data         | 0.006204  |
| query end            | 0.000007  |
| freeing items        | 0.000028  |
| closing tables       | 0.000015  |
| logging slow query   | 0.000005  |
+----------------------+-----------+
14 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

Ben*_*nee 12

似乎最好的答案是启用分析.没有其他的线索可以解决.

最佳答案,使用查询分析.

SET profiling = 1;
<query>
SHOW PROFILES;
Run Code Online (Sandbox Code Playgroud)


ax.*_*ax. 10

通过查看mysql命令行客户端来源,可以最好地回答这个问题.所述相关的代码段,

static void nice_time(double sec,char *buff,bool part_second)
{
  // ...
  if (part_second)
    sprintf(buff,"%.2f sec",sec);
  else
    sprintf(buff,"%d sec",(int) sec);
}
Run Code Online (Sandbox Code Playgroud)

具有硬编码为(2)的值的小数点后的位数.这将使我得出结论,库存mysql安装无法实现更高的精度时间.

当然,您可以修补此代码,使其可配置等,并从源代码安装.我想这就是你提到的文章和问题中的人们正在做的事情.你最好的机会就是问问他们(看我对你问题的评论).