MySQL 执行计划explain for connection是个非常有用的功能,我们可以通过这个命令查看正在执行的SQL的执行计划,对于检查一些执行时间长的SQL非常有用,这个命令的语法是:

EXPLAIN [options] FOR CONNECTION connection_id;

connection_id是需要被解释的连接的ID。这个id可以通过show processlist或者在连接里面输入SELECT CONNECTION_ID()来查看。
但这个功能却有两个常见的坑。
一个是不能检查没有执行DML语句的连接,会有下面的提示。

ERROR 3012 (HY000): EXPLAIN FOR CONNECTION command is supported only for SELECT/UPDATE/INSERT/DELETE/REPLACE

特别注意是不能检查自身的链接。
另外一个坑是只能检查正在执行的SQL,即使的刚刚执行过的SQL也检查不了。仔细看下面的图就会明白:
在这里插入图片描述
注意时间点。在mysql的提示符里面加上当前时间,可以用:prompt \r:\m:\s\P>_ 。
EXPLAIN format=json FOR CONNECTION 可以得到更详细的信息。

文章下方是我的微信,欢迎加我。👇

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐