要获得在命名连接中执行的可解释语句的执行计划,请使用以下语句:
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 仅当在命名连接中执行的语句是可解释的时才适用。这包括 SELECT, DELETE, INSERT, REPLACE,和 UPDATE。(但是, 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执行的语句。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




