explain分析执行sql

1.执行sql

explain SELECT DISTINCT 
    JSON_UNQUOTE(rw.labels->'$.hostIp') AS host_ip
FROM 
    sigma_resource_wide rw
JOIN 
    sigma_resource_extend re 
ON 
    rw.internal_address = re.internal_address
WHERE 
    re.v IN ('10.185.72.224', '10.185.72.226');

2.分析过程

3.结果说明:

你提供的 EXPLAIN 结果展示了一个两表 JOIN 查询的执行计划,下面是详细解析:
整体结构说明
EXPLAIN 结果显示这是一个两表连接查询,包含两行记录,每行对应一个表的处理过程:

第一行处理表re(sigma_resource_extend)
第二行处理表rw(sigma_resource_wide)
各列含义解析(以第一行为例)
plaintext
1 SIMPLE re NULL range idx_v idx_v 603 NULL 2 100.00 Using index condition; Using temporary

id:查询序列号,这里都是 1,表示单表查询或简单连接
select_type:查询类型,SIMPLE表示简单查询,非子查询或复杂查询
table:当前处理的表,re对应 sigma_resource_extend 表
partitions:分区信息,NULL 表示未使用分区表
type:连接类型,range表示使用索引范围查询,性能较好
possible_keys:可能使用的索引,idx_v是 sigma_resource_extend 表上的索引
key:实际使用的索引,idx_v,说明优化器选择了该索引
key_len:索引使用的长度,603 表示索引字段的总长度(字节)
ref:关联条件中使用的列或常量,NULL 表示范围查询不涉及关联
rows:预计扫描的行数,2 行,说明条件筛选后结果很少
filtered:过滤百分比,100.00% 表示所有扫描的行都满足条件
Extra:额外信息:

Using index condition:使用了索引下推(Index Condition Pushdown)
Using temporary:使用了临时表,可能用于结果排序或去重
第二行解析
plaintext
1 SIMPLE rw NULL ref uk_address,idx_address uk_address 803 func 1 100.00 Using index condition

type:ref表示使用非唯一索引或唯一索引前缀进行连接,性能较好
possible_keys:可能使用的索引uk_address和idx_address
key:实际使用的索引uk_address
ref:func表示使用函数作为关联条件
rows:预计扫描 1 行,说明通过关联条件精确匹配
Extra:Using index condition,同样使用了索引下推
关键性能点分析
连接类型分析:
re表使用range类型:通过索引范围查询,优于全表扫描
rw表使用ref类型:通过索引关联,性能较好
索引使用情况:
两表都使用了索引,避免了全表扫描
re表使用idx_v索引处理v IN条件
rw表使用uk_address索引处理连接条件
需要注意的问题:
re表的Extra中出现Using temporary:
表示 MySQL 需要创建临时表来存储中间结果
通常出现在需要去重或排序的场景,可能影响性能
rows数值很小(2 和 1):说明查询条件过滤效果好,预计性能不错

posted @ 2025-06-16 11:05  SpecialSpeculator  阅读(1)  评论(0)    收藏  举报
点击右上角即可分享
微信分享提示