EXPLAIN
可视化解释功能通过使用扩展 JSON 格式中可用的扩展信息
生成并显示 MySQL 语句的可视化表示。MySQL Workbench
EXPLAIN
为执行的查询提供所有格式,包括原始扩展 JSON、传统格式和可视化查询计划。
要查看直观的解释执行计划,请从 SQL 编辑器执行查询,然后在查询结果选项卡中选择执行计划。执行计划默认为Visual Explain
,但它还包括一个Tabular Explain
类似于您
EXPLAIN
在 MySQL 客户端中执行时看到的视图。有关 MySQL 如何执行语句的信息,请参阅
使用 EXPLAIN 优化查询。
可视解释图中的执行顺序是从下到上,从左到右。下面的图表示例概述了用于表示视觉解释计划方面的图形、文本和信息约定。具体信息参见:
第一张图中的可视化解释图显示了以下查询的可视化表示。
SELECT CONCAT(customer.last_name, ', ', customer.first_name)
AS customer, address.phone, film.title FROM rental
INNER JOIN customer ON rental.customer_id = customer.customer_id
INNER JOIN address ON customer.address_id = address.address_id
INNER JOIN inventory ON rental.inventory_id = inventory.inventory_id
INNER JOIN film ON inventory.film_id = film.film_id
WHERE rental.return_date IS NULL
AND rental_date + INTERVAL film.rental_duration DAY < CURRENT_DATE()
LIMIT 5;
下一个可视化解释图显示了包含散列连接的查询的可视化表示。block nested
loop
在 MySQL Workbench 8.0.22 之前,对于 MySQL 8.0.19(或更早版本)执行的查询
,散列连接由菱形表示。
SELECT first_name, last_name
FROM actor
FULL JOIN film_actor
WHERE '' = film_actor.actor_id;
图形约定
标准盒子:桌子
圆角框:GROUP、SORT等操作
框架框:子查询
钻石:加入
文本和信息约定
框下方的标准文本:表(或别名)名称
框下方的粗体文本:使用的键/索引
框右上角的数字:过滤后从表中使用的行数
框左上角的数字:访问该表的相对成本(需要 MySQL 5.7 或更高版本)
嵌套循环(或散列连接)菱形右侧的数字:JOIN 生成的行数
菱形上方的数字:JOIN 的相对成本(需要 MySQL 5.7 或更高版本)
下表显示了视觉解释图中使用的相关颜色和描述。有关成本估算的更多信息,请参阅优化器成本模型。
表 7.1 视觉解释图信息
系统名称 | 颜色 | 可视化图表上的文字 | 工具提示相关信息 |
---|---|---|---|
系统 | 蓝色的 | 单行:系统常量 | 成本极低 |
常量 | 蓝色的 | 单排:常量 | 成本极低 |
EQ_REF | 绿色的 | 唯一键查找 | 低成本——优化器能够找到可用于检索所需记录的索引。它很快,因为索引搜索直接导致包含所有行数据的页面 |
参考文献 | 绿色的 | 非唯一键查找 | Low-medium -- 如果匹配行数少则为Low;随着行数的增加而增加 |
全文 | 黄色 | 全文索引搜索 | 专门的全文搜索。低——对于这种专门的搜索要求 |
REF_OR_NULL | 绿色的 | 键查找 + 获取 NULL 值 | Low-medium -- 如果匹配的行数较少;随着行数的增加而增加 |
索引合并 | 绿色的 | 索引合并 | Medium -- 在查询中寻找更好的索引选择以提高性能 |
UNIQUE_SUBQUERY | 橙子 | 唯一键查找到子查询表 | Low -- 用于高效的子查询处理 |
INDEX_SUBQUERY | 橙子 | 非唯一键查找子查询表 | Low -- 用于高效的子查询处理 |
范围 | 橙子 | 索引范围扫描 | 中——部分索引扫描 |
指数 | 红色的 | 全索引扫描 | 高——特别是对于大索引 |
全部 | 红色的 | 全表扫描 | 非常高——对大表来说成本很高,但对小表的影响较小。没有为该表找到可用的索引,这迫使优化器搜索每一行。这也可能意味着搜索范围太广,索引将毫无用处。 |
未知 | 黑色的 | 未知 | 注意:这是默认设置,以防无法确定匹配项 |