有人能解释一下MySQL中EXPLAIN FORMAT=JSON
输出中的query_cost
和cost_info
字段是什么吗?我知道MySQL成本是用表mysql
. server_cost
和mysql
. engine_cost
中定义的成本值计算的,但我不明白query_cost
,read_cost
,第一个月9日第一个月、第一个月10日第一个月、第一个月11日第一个月
添加了一个EXPAIN FORMAT=JSON
输出示例以供参考。我做了一个非常简单的查询,如下所示
EXPLAIN FORMAT=JSON SELECT * FROM test WHERE id >= 1 and id <= 9;
输出是...
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "2.06"
},
"table": {
"table_name": "test",
"access_type": "range",
"possible_keys": [
"PRIMARY"
],
"key": "PRIMARY",
"used_key_parts": [
"id"
],
"key_length": "4",
"rows_examined_per_scan": 9,
"rows_produced_per_join": 9,
"filtered": "100.00",
"cost_info": {
"read_cost": "1.16",
"eval_cost": "0.90",
"prefix_cost": "2.06",
"data_read_per_join": "288"
},
"used_columns": [
"id",
"catIds"
],
"attached_condition": "((`test_dec_2022`.`test`.`id` >= 1) and (`test_dec_2022`.`test`.`id` <= 9))"
}
}
}
理解MySQL解释语句的JSON格式输出。
1条答案
按热度按时间lskq00tm1#
我一直在调查这个问题,试图回答它,但我有点失望。
2012年有一个错误(https://bugs.mysql.com/bug.php?id=67023),“解释格式=json输出未记录”。
到2015年,该漏洞被关闭,一个回复声称他们正在向文档中添加一些示例。
我添加了一些关于EXPLAIN输出列名的JSON等价物的信息;这个应该很快就会上线。我会在时间允许的时候添加一些例子和其他东西。
https://dev.mysql.com/doc/refman/en/explain-output.html中显示的只是该响应提供的内容:JSON输出中与传统EXPLAIN字段等价的字段名列表。2但是没有JSON格式中新的字段的文档,比如你提到的成本字段。
我没有在MySQL手册中找到任何描述那些字段的内容,我也读了几篇关于EXPLAIN JSON格式的博客,但到目前为止我看到的都没有描述成本字段。
我查了源代码。找到的最接近的是:
https://github.com/mysql/mysql-server/blob/8.0/sql/opt_explain_format.h#L311-L315
我猜这些变量最终会变成
read_cost
、prefix_cost
和eval_cost
,这些简短的注解(实际上是句子片段)是我找到的唯一描述。