mysql的explain format=json 参数解析
时间: 2023-11-14 12:29:23 浏览: 143
MySQL的`EXPLAIN`命令可以用于查看查询语句的执行计划,以便优化查询性能。在MySQL 8.0版本及以上,`EXPLAIN`命令还支持使用`FORMAT=JSON`参数来以JSON格式输出执行计划。
下面是`EXPLAIN`命令中`FORMAT=JSON`参数的解析:
1. `query_block`对象:该对象表示查询语句中的一个查询块,通常对应一个表或者子查询。
- `select_id`:查询块的ID。
- `cost_info`:查询块的成本信息,包括估计行数、扫描行数、扫描成本等。
- `table`对象:表示查询块对应的表。
- `table_name`:表名。
- `access_type`:表示访问表的方式,包括`ALL`、`index`、`range`、`ref`等。
- `possible_keys`:表示可以使用的索引。
- `key`:表示实际使用的索引。
- `key_length`:表示使用的索引长度。
- `rows_examined_per_scan`:表示每次扫描扫描的行数。
- `rows_produced_per_join`:表示每次连接产生的行数。
- `source_query_block`对象:表示查询块的源查询块,如果没有则表示该查询块为根查询块。
2. `join`对象:表示查询中的连接操作,包括`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN`等。
- `select_id`:查询块的ID。
- `table`对象:表示连接的另一个表。
- `table_name`:表名。
- `access_type`:表示访问表的方式,包括`ALL`、`index`、`range`、`ref`等。
- `possible_keys`:表示可以使用的索引。
- `key`:表示实际使用的索引。
- `key_length`:表示使用的索引长度。
- `rows_examined_per_scan`:表示每次扫描扫描的行数。
- `rows_produced_per_join`:表示每次连接产生的行数。
- `join_type`:表示连接类型。
- `join_algorithm`:表示连接算法。
- `condition`:表示连接条件。
3. `subquery`对象:表示子查询。
- `select_id`:查询块的ID。
- `cost_info`:查询块的成本信息,包括估计行数、扫描行数、扫描成本等。
- `dependent`:表示子查询是否为依赖查询。
- `query`:表示子查询的查询语句。
4. `union`对象:表示`UNION`操作。
- `select_id`:查询块的ID。
- `cost_info`:查询块的成本信息,包括估计行数、扫描行数、扫描成本等。
- `query_block`:表示`UNION`操作中的另一个查询块。
以上就是MySQL的`EXPLAIN`命令中`FORMAT=JSON`参数的解析。通过解析执行计划,可以更好地理解查询语句的执行过程,并进行性能优化。
阅读全文