Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Obtaining Execution Plan Information for a Named Connection

10.8.4 获取命名连接的执行计划信息

要获取命名连接中执行的可解释语句的执行计划,请使用以下语句:

EXPLAIN [options] FOR CONNECTION connection_id;

EXPLAIN FOR CONNECTION 返回当前在给定连接中执行的查询的 EXPLAIN 信息。由于数据的变化(和支持统计信息),它可能会产生与在等效查询文本上运行 EXPLAIN 不同的结果。这一区别的行为可以诊断更多的暂时性能问题。例如,如果您在一个会话中运行一个语句需要很长时间来完成,使用 EXPLAIN FOR CONNECTION 在另一个会话中可能会产生关于延迟的有用信息。

connection_id 是连接标识符,从 INFORMATION_SCHEMA PROCESSLIST 表或 SHOW PROCESSLIST 语句中获取。如果您拥有 PROCESS 权限,可以指定任何连接的标识符。否则,只能指定您自己的连接标识符。在所有情况下,必须拥有足够的权限来解释指定连接上的查询。

如果命名连接没有执行语句,结果为空。否则,EXPLAIN FOR CONNECTION 只适用于命名连接中执行的语句是可解释的。这包括 SELECTDELETEINSERTREPLACEUPDATE。(但是,EXPLAIN FOR CONNECTION 不适用于预备语句,即使是这些类型的预备语句。)

如果命名连接执行的是可解释语句,输出将是使用 EXPLAIN 在语句本身上的输出。

如果命名连接执行的是不可解释语句,将发生错误。例如,您不能命名当前会话的连接标识符,因为 EXPLAIN 不是可解释的:

mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
|             373 |
+-----------------+
1 row in set (0.00 sec)

mysql> EXPLAIN FOR CONNECTION 373;
ERROR 1889 (HY000): EXPLAIN FOR CONNECTION command is supported
only for SELECT/UPDATE/INSERT/DELETE/REPLACE

状态变量 Com_explain_other 表示执行的 EXPLAIN FOR CONNECTION 语句的数量。