You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL EXPLAIN FORMAT=JSON中query_cost与cost_info字段解析问询

MySQL EXPLAIN FORMAT=JSON 成本字段解析

MySQL查询优化器的预估成本基于mysql.server_cost和mysql.engine_cost表中定义的基准值计算,下面结合你提供的单表范围查询示例,逐个解析JSON输出中的核心成本字段:

顶层query_cost

这是整个查询的预估总成本,单表查询场景下,它直接等于表级cost_info中的prefix_cost;多表连接查询时,则等于最后一个关联表的prefix_cost。示例中该值为2.06,和表级的prefix_cost完全一致。

表级cost_info字段详解

read_cost

代表读取数据的预估成本,包含定位目标数据的基础IO/CPU成本,以及扫描匹配数据行的额外成本。
结合示例计算:默认配置下,基础扫描成本为1,每行额外扫描成本为0.02,示例中rows_examined_per_scan为9,因此:
read_cost = 1 + (9-1)*0.02 = 1.16,和输出值完全匹配。

eval_cost

代表评估每行数据是否满足查询条件的成本,计算公式为:
eval_cost = rows_produced_per_join * 每行评估成本
默认每行评估成本为0.1,示例中rows_produced_per_join为9,因此:
eval_cost = 9 * 0.1 = 0.90,与输出一致。

prefix_cost

这是当前表及之前所有关联表的累计查询成本,等于read_cost + eval_cost。示例中1.16 + 0.90 = 2.06,既作为当前表的累计成本,也成为整个查询的query_cost。

data_read_per_join

代表预估每次连接操作读取的总字节数,用于衡量查询的IO开销规模。示例中该值为288,对应预估的9行数据,每行平均占用32字节(可根据表结构的字段类型、长度估算)。


内容的提问来源于stack exchange,提问作者yugandhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:25:33