7.4视觉解释方案

visual explain特性生成并显示一个MySQL的可视化表示解释语句,使用扩展JSON格式的扩展信息。MySQL工作台提供了所有的解释已执行查询的格式,包括原始扩展JSON、传统格式和可视化查询计划。

Visual Explain用法

要查看可视化的explain执行计划,请在SQL编辑器中执行查询,然后选择执行计划在查询结果选项卡中。执行计划默认为Visual Explain,但它也包括a表格解释视图,与您在执行时看到的类似解释在MySQL客户端。有关MySQL如何执行语句的信息,请参见使用EXPLAIN优化查询

Visual Explain约定

可视化解释图的执行顺序是从下到上,从左到右。下面的图表示例提供了用于表示可视化解释计划各方面的图形、文本和信息约定的概述。具体信息请参见:

第一个图中的可视化解释图显示了以下查询的可视化表示。

选择CONCAT(客户。last_name, ', ', customer.first_name)作为客户,地址。电话,电影。标题从租赁内JOIN客户租赁。customer_id =客户。customer_id客户上的内部连接地址。address_id =地址。address_id内部连接库存租赁。inventory_id =库存。inventory_id库存上的内连接膜。film_id =电影。film_id出租的地方。return_date为空,rental_date +间隔胶片。rental_duration DAY < CURRENT_DATE() LIMIT 5;

图7.7一个可视化的解释示例

内容在周围的文字中有描述。

下一个可视化解释图显示了包含散列连接的查询的可视化表示。在MySQL工作台8.0.22之前,哈希连接用a表示块嵌套循环diamond用于MySQL 8.0.19(或更早版本)执行的查询。

SELECT first_name, last_name FROM actor FULL JOIN film_actor WHERE " = film_actor.actor_id;

图7.8一个带有散列连接的可视化解释示例

内容在周围的文字中有描述。

图形的约定

  • 标准框:表

  • 圆角框:操作,如分组和排序

  • 框架箱:子查询

  • 钻石:连接

文本和信息约定

  • 下面的标准文本框:表(或别名)名称

  • 框下面的粗体文本:所使用的键/索引

  • 框右上角的数字:过滤后从表中使用的行数

  • 左上角的数字:访问该表的相对成本(需要MySQL 5.7或更高)

  • 嵌套循环(或散列联接)右侧的数字菱形:联接产生的行数

  • 菱形上面的数字:连接的相对成本(需要MySQL 5.7或更高)

下表显示了可视化解释图中使用的相关颜色和描述。有关成本估算的更多信息,请参见优化器成本模型

表7.1可视化解释图信息

系统名称 颜色 视觉图上的文字 工具提示相关信息
系统 蓝色的 单行:系统常数 成本很低
常量 蓝色的 单行:常数 成本很低
EQ_REF 绿色 唯一键查找 低成本——优化器能够找到用于检索所需记录的索引。它之所以快,是因为索引搜索直接指向包含所有行数据的页面
裁判 绿色 非唯一键查找 Low-medium——如果匹配的行数较少,则为低;随着行数的增加而增加
全文 黄色的 全文索引搜索 专门的全文搜索。低——针对这个特殊的搜索需求
REF_OR_NULL 绿色 键查找+获取空值 Low-medium—如果匹配的行数较少;随着行数的增加而增加
INDEX_MERGE 绿色 索引合并 Medium——在查询中寻找更好的索引选择以提高性能
UNIQUE_SUBQUERY 橙色 子查询表中的唯一键查找 Low——用于高效的子查询处理
INDEX_SUBQUERY 橙色 子查询表中的非唯一键查找 Low——用于高效的子查询处理
范围 橙色 索引范围扫描 Medium——部分索引扫描
指数 红色的 全索引扫描 高——尤其是对大型指数而言
所有 红色的 全表扫描 非常高——对于大桌子来说非常昂贵,但是对于小桌子的影响较小。没有为表找到可用的索引,这迫使优化器搜索每一行。这也可能意味着搜索范围太广,索引将毫无用处。
未知的 黑色的 未知的 注意:这是默认值,以防无法确定匹配