如何将 MySQL EXPLAIN 结果复制到表中?

kcd*_*kcd 6 explain mysql-5.6

我想将一系列查询 EXPLAIN 计划的结果存档到一个表中以供以后分析。

我创建了一个包含 EXPLAIN 结果中所有字​​段的表,但我不知道如何通过执行 EXPLAIN 命令来填充它。

我想出了如何在 MySQL Workbench 中导出包含 INSERT 命令的 .sql 文件,但我必须手动编辑它才能使其工作。EXPLAIN 信息是否存储在某处以便我可以编写查询来自动执行?我在 information_schema 或 performance_schema 中都找不到它。

oNa*_*are 3

如果您正在运行,Linux OS则可以将其保存到文件中。

例子:

User='root'
Pass='text'
Host='10.0.0.223' (If it's remote)
Run Code Online (Sandbox Code Playgroud)

在命令行上运行:

mysql -u $User -p$Pass --host=$Host -e "EXPLAIN SELECT * FROM mysql.user LIMIT 0,2" | tee -a test.txt
Run Code Online (Sandbox Code Playgroud)

mysql -e将在命令行上执行查询。

tee -a将从标准输入读取并写入文件test.txt

你会得到:

在此输入图像描述

您可以使用perl将死亡行替换为您想要的任何分隔符(我在本示例中使用逗号)。

perl -wnlpi -e 's/\s+/,/g;' text.txt
Run Code Online (Sandbox Code Playgroud)

例子:

在此输入图像描述

希望这有帮助。