当前位置:网站首页>mysql之的执行计划
mysql之的执行计划
2022-08-03 17:28:00 【Bugxiu_fu】
一、什么是执行计划?
使用 EXPLAIN 关键字可以模拟优化器执行SQL查询语句,从而知道MYSQL是如何处理你的sql语句的。
执行计划流程(最好配合图理解)
浏览器(客户端)发送一个请求,执行数据库查询之前,找到连接池(循环使用),跟数据库驱动进行连接,获取连接之后找到mysql服务的,然后连接池找到查询缓存,然后进行解析,找到解析树解析,预处理完了之后生成新的解析树,新解析树后查询优化器,执行sql之后,通过引擎找到数据文件读取数据返回给缓存,最后才返回给用户。
一些优化器:(了解)
CBO:基于成本的优化器,看走那一个索引,根据成本值统计索引。
RBO: 基于规则的优化器,有索引使用索引。那么所有带有索引的表在任何情况下都会走索引
二、执行计划的值与参数
代码
explain (select * from t_users id=1 union select * from t_users id=2);
运行结果
![]()
【参数详解】
select_type:类别,主要用于区别普通查询,联合查询,子查询等的复杂查询(union)
simple:简单的select查询,不包含子查询或者union
primary:查询中包含任何复杂的子部分,最外层查询则被标记
derived:from列表中用到子查询,将表中当成查询的条件,也计算子查询
union:包含在 from 子句的子查询中,出现子查询时,会生成临时表
type:是较为重要的一个指标,结果值从最好到最坏依次是(性能)
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > index_subquery > range > index > all
注:(sytem,const,eq_ref,ref,range表示系统走了索引)
system: 表中只有一行记录(等于系统表);
const表示通过索引一次就找到了;
eq_ref: 维一记录;
ref: 非唯一索引扫描;
range: 只检索给定范围的行
all:全表扫描
index:索引覆盖(扫描全部)
null:执行时甚至不用访问表或索引;
paritiions:如果表数据量大的话,设置分区条件。
possible_keys:可能使用的key(索引)
key:实际上使用的索引
key_len:使用的键长度(字节数)
ref:显示哪个字段或常数与key一起被使用
rows:遍历多少数据才能找到
Extra:表示不合适在其他列中显示但十分重要的额外信息
Using index:覆盖索引以避免访问表。
Using temporary:排序临时表
Using where:检索后过滤
怎么对myql进行性能优化?
服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。
如果一列进行索引的时候,尽量避免使用null值,因为它的值比较复杂,不容易创建索引。
边栏推荐
- 一个域名对应多个IP地址
- CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
- CC2530_ZigBee+HUAWEI CLOUD IOT: Design your own cold chain acquisition system
- TypeScript的配置文件tsconfig.json
- EasyExcel implements dynamic column parsing and table storage
- Web3 security risks daunting?How should we respond?
- FinClip | July 2022 Product Highlights
- 深度学习跟踪DLT (deep learning tracker)
- EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
- 计网知识点
猜你喜欢
deepstresam的插件配置说明,通过配置osd,设置字体的背景为透明
three.js简介
【GAMES101】作业6 加速结构
SkyWalking概要介绍
leetcode-每日一题899. 有序队列(思维题)
error:Illegal instruction (core dumped),离线下载安装这个other版本numpy
Component communication - parent-child component communication
【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
003_Kubernetes核心技术
CC2530_ZigBee+HUAWEI CLOUD IOT: Design your own cold chain acquisition system
随机推荐
JS 字符串转 GBK 编码超精简实现
Interviews are no longer hanged!This is the correct way to open the seven schemes of Redis distributed locks
sphinx coreseek的安装和php下使用
一些嵌入式软件设计经验
LyScript 从文本中读写ShellCode
云图说丨初识华为云微服务引擎CSE
高效的组织信息共享知识库是一种宝贵的资源
完整的搭建内网穿透ngrok详细教程(有图有真相)
为什么我用了Redis之后,系统的性能却没有提升
如何直击固定资产管理的难题?
C# 构造函数如人之影子
node connection mongoose database process
Big guys.Use flink-cdc-sqlserver version 2.2.0 to read sqlserver2008R
出海,是泡泡玛特的“解药”吗?
企业如何选择低代码开发平台
J9货币论:数字经济为全球经济复苏注入力量
How ArkUI adapter somehow the screen
【时间的比较】
phoenix创建映射表和创建索引、删除索引
EasyExcel implements dynamic column parsing and table storage