为执行的查询收集的重要统计信息,包括时间、临时表、索引、联接等,都收集在“查询统计 SQL 编辑器结果”选项卡中(请参阅以下两图)。
启用查询,并收集性能架构统计信息。
performance_schema 已启用语句检测。
通过利用增强型 JSON 格式中包含的附加数据,可视化解释功能可创建并呈现 MySQL EXPLAIN 语句的可视化描述。所有 EXPLAIN 格式,包括标准格式、原始扩展 JSON 和可视化查询计划,都可以在 MySQL Workbench 中用于执行查询。
在 SQL 编辑器中执行查询,然后从查询结果菜单中选择“执行过程”以接收执行计划的直观说明。除了默认的可视化解释视图之外,执行计划还包含一个表格解释视图,类似于您在 MySQL 客户端中运行 EXPLAIN 时看到的内容。有关 MySQL 如何执行语句的详细信息,请参阅使用 EXPLAIN 优化查询。
视觉解释约定
视觉解释图应该从下到上、从左到右阅读。下面的图表示例中给出了用于表示视觉解释计划的各种元素的图形、文本和信息约定的概述。要了解更多详细信息,请参阅 –
图形标准
信息和文本约定
第一张图的视觉解释图提供了以下查询的视觉描述。
select * FROM employee_table
登录后复制
标准盒子:桌子
圆角框:GROUP 和 SORT 等操作
框架框:子查询
钻石:连接
框下方的标准文本:表(或别名)名称
框下方的粗体文本:使用的键/索引
方框右上角的数字:过滤后表格中使用的行数
方框左上角的数字:访问该表的相对成本(需要 MySQL 5.7 或更高版本)
嵌套循环(或散列连接)菱形右侧的数字:JOIN 生成的行数
菱形上方的数字:JOIN 的相对成本(需要 MySQL 5.7 或更高版本)
下表显示了视觉解释图中使用的相关颜色和描述。有关成本估算的详细信息,请参阅优化器成本模型。
系统名称
颜色
可视化图表上的文本
工具提示相关信息
系统
蓝色
单行:系统常量
成本非常低
常量
单行:常量
EQ_REF
绿色
唯一键查找
低成本——优化器能够找到可用于检索所需记录的索引。速度很快,因为索引搜索直接指向包含所有行数据的页面
参考
非唯一键查找
低-中 — 如果匹配行数较少,则为低;随着行数的增加而更高
全文
黄色
全文索引搜索
专门的全文搜索。低——针对这种专门的搜索要求
REF_OR_NULL
按键查找 + 获取 NULL 值
低-中——如果匹配的行数很少;随着行数的增加而更高
INDEX_MERGE
索引合并
中——在查询中寻找更好的索引选择以提高性能
UNIQUE_SUBQUERY
橙色
子查询表中的唯一键查找
低 — 用于高效的子查询处理
INDEX_SUBQUERY
子查询表中的非唯一键查找
范围
索引范围扫描
中 — 部分索引扫描
索引
红色
完整索引扫描
高——特别是对于大索引
全部
全表扫描
非常高 – 对于大型表来说成本非常高,但对于小型表影响较小。找不到该表的可用索引,这迫使优化器搜索每一行。这也可能意味着搜索范围太广,索引将毫无用处。
未知
黑色
注意:这是默认值,以防无法确定匹配
在本文中,我们学习了如何在 MySQL Workbench 中获取查询统计信息以及它同时具有哪些不同特征。
以上就是MySQL 中的查询统计的详细内容,更多请关注恰卡编程网(mip.qiaqa.com)其它相关文章!
我们如何从现有 MySQL 表的列中删除 FOREIGN KEY 约束?
我们可以通过使用DROP关键字和ALTERTABLE语句从现有表的列中删除FOREIGNKEY约束。语法ALTER...
如何改变MySQL表的列位置而不丢失列数据?
借助ALTERTABLE命令,您可以更改MySQL表的列位置而不会丢失数据。语法如下–ALTERTABLEyour...
在 MongoDB 中存储日期/时间的最佳方式?
可以通过两种不同的方式在MongoDB中存储日期/时间。在第一种方法中,您可以像JavaScript一样使用Date对...
修复 MySQL 数据库错误 #1064?
mysql˃createtableDemoTable(UserIdintNOTNULLAUTO_I...
如何在任何 MySQL 表中实现 CANDIDATE 键?
每个关系可能有一个或多个候选键。这些候选键之一称为主键。每个候选键都有资格成为主键。因此,候选主键称为候选键。要在MySQL中...
我们如何创建一个在某个指定时间间隔后执行的 MySQL 一次性事件?
示例mysql˃CREATEEVENTtesting_event5ONSCHEDULEATCURRENT_TIMES...
如何统计MySQL数据库中表的数量?
要计算表的总数,请使用table_schema的count(*)概念。首先,要检查我们的数据库“business”中有多少...
MySQL 如何使用 YEAR 数据类型在表中存储年份值?
MySQL允许声明列YEAR类型,借助它我们可以在该列中存储年份值。mysql˃Createtableyear1(Y...
MySQL 和 SQL Server 的区别
MySQL和SQLServer都是关系数据库管理系统或RDBMS。MySQL是开源的,可以免费使用,而SQLSe...
如何向现有 MySQL 表添加列?
通过使用ALTER命令,我们可以向现有表添加列。Altertabletable-nameADD(column-name...
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议