前提条件
数据库引擎为:
RDS MySQL
MyBase MySQL
PolarDB MySQL版
说明 暂不支持PolarDB MySQL版的单节点集群(原单节点实例)。
PolarDB-X 2.0
说明 不支持大版本为5.4.13
,小版本在[16415631,16504348]
范围内的PolarDB-X 2.0实例。查看PolarDB-X 2.0实例版本请参见查看和升级实例版本。
目标实例已经接入DAS,详情请参见实例接入简介。
目标实例的接入状态为接入正常。
功能限制
不支持对使用X-Engine表的SQL进行诊断和优化。
在慢日志分析页面创建SQL可视化分析
本功能能够以直观的图形化方式呈现复杂的SQL执行流程。通过图形界面,您可以清晰地了解查询的执行路径、各节点的执行效率以及潜在的性能瓶颈,从而在慢SQL优化、上线前的代码审查、自检等场景中迅速定位问题并进行针对性优化。
重要 当前在慢日志分析页面进行SQL优化,仅支持RDS MySQL 5.6、5.7、8.0 版本
、PolarDB MySQL 5.6、5.7、8.0 版本
实例。
登录DAS控制台。
在左侧导航栏中,单击智能运维中心 > 实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏中,单击 > 。
在慢日志分析页面:
在弹出窗中点击创建计划。

选择执行节点类型。

单击确认创建,即可创建可视化执行计划。

可视化执行计划详解
可视化执行计划中的执行顺序为自下而上、自左向右,即最底层的节点为查询的起始点,逐层向上展示数据的处理流程,直至最终的查询结果输出。如下图所示:

节点颜色含义
高效节点(绿色):表示高效的访问方式,包括:system
、const
、eq_ref
、ref
、ref_or_null
、index_merge
。
中等效率节点(黄色):表示次优的访问方式,包括:fulltext
、unique_subquery
、index_subquery
、range
。
低效节点(红色):表示低效的访问方式,优先优化对象,包括:all
、index
。
节点展示说明

优化建议
优先关注并优化标记为红色的低效节点,以显著提升查询性能。
术语与解释
英文术语 | 中文释义 | 技术解释 |
QUERY_BLOCK | 查询块 | SQL语句的语义分割单元,每个独立查询或子查询构成一个查询块,EXPLAIN输出中通过select_id 进行标识。 |
ATTACHED_SUBQUERIES | 附着子查询 | 通过EXISTS、IN、ANY 等谓词附加在WHERE、HAVING、ON 子句中的子查询,与主查询存在逻辑依存关系。 |
CORRELATED_SUBQUERY | 相关子查询 | 引用外层查询列的嵌套查询,执行时需要绑定外部上下文值,可能导致O(n²)复杂度。 |
NON_CORRELATED_SUBQUERY | 非相关子查询 | 完全自包含的子查询,可独立于外层查询执行,通常被优化器提前计算并物化为常量。 |
MATERIALIZED_FROM_SUBQUERY | 物化子查询 | MySQL 5.6+引入的优化策略,将子查询结果持久化到内存临时表中,通常与subqueryN 格式的派生表关联。 |
OPTIMIZED_AWAY_SUBQUERIES | 优化消除的子查询 | 经查询重写优化后完全移除的子查询(如常量子查询下推),不会出现在最终执行计划中。 |
QUERY_SPECIFICATIONS | 查询规范结构 | 描述完整查询的语法要素,包括SELECT列表、FROM子句、过滤条件等组件组成的完整语义单元。 |
SELECT_LIST_SUBQUERIES | SELECT列表子查询 | 出现在投影列(SELECT字段列表)中的标量子查询,需确保每次迭代返回单个标量值。 |
INDEX_SCAN | 索引扫描 | 使用B+树索引进行数据访问的模式,根据扫描方向可分为正序扫描(ASC)或逆序扫描(DESC),可能包含回表操作。 |
TABLE_SCAN | 全表扫描 | 当无可用索引或需要访问超阈值比例数据时,优化器选择扫描聚簇索引全页的访问方式,性能与表数据量成正相关。 |
ORDERING_OPERATION | 结果集排序 | 使用显式排序算法(如filesort)对结果集进行ORDER BY操作,可能使用内存或磁盘临时文件。 |
NESTED_LOOP | 嵌套循环连接 | 表连接算法的最基础实现,对外部表的每行数据遍历内部表的匹配行,在连接谓词有效过滤时效率较高。 |
DUPLICATES_REMOVAL | 结果去重 | 实现DISTINCT语义的操作方式,底层可能通过临时表唯一索引或排序后过滤实现,成本取决于数据分布特征。 |
WINDOWING_OPERATION | 窗口函数计算 | 对OVER()子句定义的数据窗口进行的分析函数计算(如ROW_NUMBER、RANK ),可能需要全量数据集排序。 |
TABLE | 基表引用 | 执行计划中直接访问的物理存储对象,包含表名、别名及访问方法(如const、system、range 等)信息。 |
在实例会话页面进行SQL优化
重要 当前自建MySQL、MongoDB和RDS PostgreSQL数据库实例不支持在实例会话页面进行SQL优化。
登录DAS控制台。
在左侧导航栏中,单击智能运维中心 > 实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏中,单击。
在实例会话区域,选中需要进行SQL优化的会话,单击优化。
在弹出的SQL诊断优化对话框中,查看SQL诊断结果。
若您采纳诊断建议,单击页面右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击取消结束诊断。
说明 DAS会根据SQL的复杂程度、对应表的数据量、数据库负载等进行SQL诊断,诊断建议的返回时间可能会超过20秒。完成诊断后,SQL诊断引擎会给出诊断结果、优化建议和预期优化收益,您可以根据诊断结果确认是否采纳建议。

查看SQL诊断历史
登录DAS控制台。
在左侧导航栏中,单击智能运维中心 > 实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏中,单击。查看当前实例的SQL诊断历史(如SQL内容、诊断状态、诊断时间、诊断结果等)。