MYSQL 解释器小记

解释器的结果通常通过上述表格展示:

  1. select_type 表示查询的类型

simple: 表示简单的选择查询,没有子查询或连接操作

primary:表示主查询,通常是最外层的查询

subquery :表示子查询,在主查询中嵌套的查询

derived: 表示派生查询,用于创建临时表或视图

UNION_RESULT :表示 UNION 操作的结果集。

DEPENDENT SUBQUERY:表示依赖于外部查询的子查询。

UNCACHEABLE SUBQUERY:表示无法被缓存的子查询。

COMPLEX SUBQUERY:表示复杂的子查询,可能包含多个子查询或其他复杂的结构。

2.table 字段表示查询中涉及的表名

3.partitions字段表示使用的分区数。如果查询涉及到分区表,该字段将显示使用的分区数。对于大型表,全表扫描的效率较低,应尽可能使用索引。通过该字段,用户可以了解查询是否最优地利用了分区。

4.type 表示连接操作的类型,它提供了有关表之间的操作

all:表示全表扫描

index:表示索引进行连接。(当查询中涉及到有索引的字段,多个条件中其中有1个或几个涉及到索引字段,则使用index)

range:表示使用范围扫描进行连接

ref:表示使用引用完整性进行连接(查询条件即为索引字段,则使用ref)

eq_ref:表示通过主键或唯一索引进行连接

const:表示常量连接,通常用于连接条件中使用常量值的情况

5.possible_keys 代表查询可能用到的索引,如果查询没有用到预期的索引,可能需要进一步分析查询语句和表语句

  1. key 表示mysql 执行查询时,最终使用的索引。

7.key_len 表示查询中使用到索引的长度。长度越短,说明索引越高效。索引的长度通常跟字段的长度一致。

8.ref字段主要用于表示索引的引用类型。

9.rows 表示SQL 执行过程中扫描的行数

10.filtered 执行查询过滤后的行数所占的比例,范围0-100,满足条件的行数与总行数之间的比例,越小越好。如果为100.表示没有筛选

11.extra 提供有关查询计划外的额外信息。use where 表示通过索引访问后,需要再回表访问所需要的数据。过滤条件发生在server层而不是存储引擎层。如果执行计划走了索引,但rows 很高,那么执行效果不会好。索引访问的成本主要在回表上,可以用覆盖索引来优化。using index condition 表示系统对访问表数据进行了优化。

覆盖索引是指一个索引包含了查询所需的所有列,因此查询可以直接从索引中获取数据,而不必去访问数据表。当查询的数据量较大时,覆盖索引可以极大地提高查询性能,因为不必访问数据表,从而减少了磁盘 I/O 操作和 CPU 开销。

相关推荐
wjhx6 分钟前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
冰暮流星17 分钟前
javascript之二重循环练习
开发语言·javascript·数据库
万岳科技系统开发42 分钟前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
冉冰学姐1 小时前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架
杨超越luckly1 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
斯普信专业组1 小时前
构建基于MCP的MySQL智能运维平台:从开源服务端到交互式AI助手
运维·mysql·开源·mcp
Elastic 中国社区官方博客1 小时前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索
仍然.1 小时前
MYSQL--- 聚合查询,分组查询和联合查询
数据库
一 乐1 小时前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
啦啦啦_99991 小时前
Redis-0-业务逻辑
数据库·redis·缓存