Mysql(一)--EXPLAIN的参数解析及简单应用

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

Mysql逻辑架构

本篇博客的主题是explain查询分析器的使用,在写这个之前非常有必要了解一下mysql的查询分析器,才不至于,在后期了解完一些mysql优化原则后与一些结果产生歧义。 ![这里写图片描述](https://img-blog.csdn.net/20180521152759814?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poMTU3MzI2MjE2Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 1.最上层不是mysql独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构,比如,连接处理,授权认证,安全等 2.第二层包括了mysql的许多核心功能,例如,查询解析,分析,优化,缓存等
  • SQL Interface:主要能分析出请求的sql语句是什么类型的操作(增删改查)
  • Parser:起到过滤的作用
  • Optimizer:是mysql的分析器,可以将程序员写的代码转换成mysql认为最优的

3.第三层是mysql的存储引擎,例如InnoDB,NDB,MyiSAM等

  • 18
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
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`参数解析。通过解析执行计划,可以更好地理解查询语句的执行过程,并进行性能优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值