MySQL 如何在不将查询结果输出到控制台的情况下检查MySQL查询所用的时间?
要检查这个,我们需要具有剖析信息,该信息指示在当前会话期间执行的语句的资源使用情况。剖析信息可以通过 SHOW PROFILE 和 SHOW PROFILES 语句获得。
在运行这些语句之前,必须将剖析会话变量设置为1,如下所示−
mysql> set profiling = 1;
查询 OK,受影响行数为0(0.00秒)
现在,如果我们运行 SHOW PROFILES 语句,那么它将显示最近发送到服务器的语句列表以及持续时间和查询 ID。
mysql> show profiles;
+----------+------------+--------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+--------------------------------------+
| 1 | 0.01602200 | drop table if exists t1 |
| 2 | 0.57223450 | create table t1(id int) |
| 3 | 0.00015425 | show profile for query1 |
| 4 | 0.22945050 | create table e1(id int) |
| 5 | 0.09977025 | insert into e1(id) values(3),(4),(5) |
+----------+------------+--------------------------------------+
共 5 行(0.00秒)
现在假设我们想检查特定查询的持续时间,那么我们可以运行 SHOW PROFILE ,对于 查询号码 语句。例如,如果我们为查询编号 = 5运行该语句,则输出将如下所示−
mysql> show profile for query 5;
+------------------------------+--------------+
| Status | Duration |
+------------------------------+--------------+
| starting | 0.000138 |
| checking permissions | 0.000024 |
| Opening tables | 0.000057 |
| System lock | 0.035186 |
| init | 0.000035 |
| update | 0.021484 |
| Waiting for query cache lock | 0.000021 |
| update | 0.000005 |
| end | 0.000024 |
| query end | 0.042700 |
| closing tables | 0.000017 |
| freeing items | 0.000076 |
| logging slow query | 0.000003 |
| cleaning up | 0.000002 |
+------------------------------+--------------+
14 行(0.00秒)
阅读更多:MySQL 教程