Documentation Home
MySQL 8.0 参考手册  / 第8章优化  / 8.8 了解查询执行计划  /  8.8.4 获取命名连接的执行计划信息

8.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数。