MySQL Explain 关键字详解

news2024/12/24 10:50:21

概述

explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能

使用方式如下:explain + sql

explain select * from t1

执行计划各字段含义

1. id
  • 如果 id 序号相同,从上往下执行
  • 如果 id 序号不同,序号大先执行
  • 如果两种都存在,先执行序号大,在同级从上往下执行
  • 如果显示 NULL,最后执行,表示结果集,并且不需要使用它来进行查询
2. select_type

表示查询的类型,取值有如下:

SIMPLE:简单的 select 查询,不包含子查询或者 UNION

PRIMARY:复杂查询中最外层查询,比如使用 union 或 union all 时,id 为 1 的记录 select_type 通常是 primary

SUBQUERY:指在 select 语句中出现的子查询语句,结果不依赖于外部查询(不在 from 语句中)

DEPENDENT SUBQUERY:指在 select 语句中出现的查询语句,结果依赖于外部查询

DERIVED:derived 称为派生表,在 FROM 子句的查询语句,表示从外部数据源中推导出来的,而不是从 SELECT 语句中的其他列中选择出来的

UNION:若第二个 SELECT 出现在 UNION 之后,则被标记为 UNION;若 UNION 包含在 FROM 子句的子查询中,那么第一个 SELECT 将被标记为 DERIVED

UNION RESULT:UNION 的结果

DEPENDENT UNION:当 union 作为子查询时,其中第一个 union 为 dependent subquery,第二个 union 为 dependent union

3. table

表示当前行正在访问的表

4. type

表示查询使用的类型,性能由好到坏依次是:system > const > eq_ref > ref > range > index > all,一般来说能达到 range 级别,最好能达到 ref 级别

system:表只有一行(相当于系统表),是 const 类型的特例

const:针对主键或唯一索引的等值查询扫描,只返回一行数据

eq_ref:基于主键或唯一索引连接两个表,对于每个索引键值,只有一条匹配记录,被驱动表的类型为 eq_ref,这种类型只出现在 join

ref:非唯一性索引扫描,返回匹配多个符合条件的行

range:范围扫描,检索指定范围的行,一般出现在 where 语句出现 between、< 、>、in 等的查询

index:只遍历索引树即可找到匹配的数据,比如下例中 user_id 就是 orders 表的索引

all:遍历全表找到匹配的数据

5. possible_keys

显示可能使用到的索引,实际不一定被使用

6. key

实际使用的索引

7. key_len

索引使用的字节数,可通过该列计算查询中使用的索引的长度,主要用于联合索引

比如现有 users 表,执行以下 sql,该表有为 name 和 email 字段设置联合索引 index_name_email

explain select * from users where name = "张三" and email = "xxx@qq.com"

执行结果如下:

users 表结构如下:

name 和 email 字段都为 varchar,一个字符占 3 个字节,所以 key_len = 50 * 3 + 2 + 1 + 100 * 3 + 2 = 455,其中 varchar 需要额外占用 2 个字节,允许 NULL 值额外占用 1 个字节

据此我们可以得知 index_name_email 中的 name 和 email 字段都被使用了

8. ref

表示哪些列或常量被用于匹配用到的索引

9. rows

根据表统计信息及索引选用情况,估算出找到所需的记录所需要读取的行数,值越小越好,它不是结果集中的行数

10. filtered

表示某个表经过条件过滤之后,剩余记录条数的百分比

11. Extra

包含一些重要的额外信息

Using index:出现索引覆盖,即查询和检索条件的列都在使用的索引里面,不需要回表

Using where:不通过索引查询需要的数据

下例中 total_price 字段不存在索引

Using index condition:表示查询列不被索引覆盖,where 条件中是一个索引范围查找,过滤完索引后回表找到所有符合条件的数据行

Using filesort:当查询包含排序操作,又无法利用索引完成排序操作时,数据较少在内存排序,数据较多则在磁盘排序

Using temporary:在做如去重、排序和分组等功能时,如果不能有效利用索引,就需要建立临时表来完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1832112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目实施文档(Word原件项目直接套用)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 获取方式&#xff1a;本文末个人名片直接获取。

关于el-date-picker组件,如何隐藏时间组件底部清空按钮

工作中可能会遇到el-date-picker组件隐藏时间组件底部清空按钮 分为两种 &#xff1a; 如果你想要实现全部的el-date-picker的清空隐藏 和 某一个页面的el-date-picker的清空隐藏 1 全局隐藏 步骤1&#xff1a;在element-ui.scss中添加如下代码&#xff1a; .el-picker-pane…

Excel VLOOKUP 使用记录

Excel VLOOKUP 使用记录 VLOOKUP简单使用 VLOOKUP(lookup_value,table_array,col_index_num,[range-lookup]) 下面是excel对VLOOKUP 的解释 lookup_value&#xff08;查找值&#xff09;&#xff1a;要匹配查找的值 table_array&#xff08;数据表&#xff09;&#xff1…

想上币的项目方怎么去选择交易所

在区块链和加密货币蓬勃发展的今天&#xff0c;许多项目方都渴望通过交易所上线其代币&#xff0c;以扩大影响力、提升流动性和市场认可度。然而&#xff0c;选择合适的交易所并非易事&#xff0c;它关乎项目的未来发展和市场地位。那么&#xff0c;对于有上币意向的项目来说&a…

从0进入微服务需要了解的基础知识

文章目录 系统架构演化过程为什么要了解系统架构的演化过程技术发展认知技术选型与创新 演变过程单体架构分层-分布式集群微服务 分布式\集群\微服务 微服务中的核心要素-拆分原则项目拆分与复杂度微服务的拆分维度有哪些小结 微服务中的核心要素服务化进行拆分后一定是微服务&…

Flink 窗口函数

一、Window 概述 Flink 流式计算是一种被设计用于处理无限数据集的数据处理引擎&#xff0c;而无限数据集是指一种不断增长的本质上无限的数据集&#xff0c;而 window 是一种切割无线数据为有限块进行处理的手段。 二、Window 分类 Window 可以分为两类&#xff1a; Count…

利用Python语言调用讯飞星火认知大模型接口实战指南

什么是API接口 API&#xff08;应用程序编程接口&#xff09;是一组规则&#xff0c;允许不同的软件系统相互通信。通过API&#xff0c;开发者可以访问外部系统的功能和数据&#xff0c;而无需了解其内部实现。 API接口就像一座桥梁&#xff0c;连接应用程序和服务。例如&…

车企高管组团“出道”,汽车营销已经Next level了?

汽车进入了“卷”老板、“卷”高管的时代&#xff01; 谁能想到&#xff0c;雷军凭一己之力&#xff0c;在一定程度上重塑了汽车的竞争策略。价格战之外&#xff0c;车市又开启了流量之战。 云略曾在《雷军20天吸粉500w&#xff01;……》一文中&#xff0c;提到继雷军之后&…

敏捷开发时代,彻底结束了

最近&#xff0c;我收到一位读者的私信&#xff0c;他最近“内耗”得非常厉害&#xff0c;他可能一时兴起把我的私信当作了吐槽箱。 他们公司一直实行敏捷的管理模式&#xff0c;复盘发现了一个问题&#xff1a;发布与迭代具有强相关性&#xff0c;一个迭代就发布一次&#xf…

网络安全 DVWA通关指南 SQL Injection(SQL注入)

DVWA SQL Injection 文章目录 DVWA SQL InjectionLowMediumHighImpossible SQL注入漏洞基本原理 Web应用程序对用户输入的数据校验处理不严或者根本没有校验&#xff0c;致使用户可以拼接执行SQL命令。 可能导致数据泄露或数据破坏&#xff0c;缺乏可审计性&#xff0c;甚至导致…

RockChip Android12 Settings一级菜单

一:概述 在之前的文章中对Android8.1 Settings的流程进行了说明,本章将针对Android12 Settings一级菜单的加载逻辑进行详细说明,Settings版本之间的差异不是很大,有兴趣的同学可自行学习,本文不在做赘述。 Android8.1 Settings说明:RockChip Android8.1 Settings-CSDN博…

浏览器开发公司Brave 将自己的搜索结果与其 Leo AI 助手集成

Brave Software是一家开发浏览器的公司&#xff0c;其主要产品是Brave浏览器。Brave浏览器基于Chromium项目开发&#xff0c;具有高性能和隐私保护的特点。此外&#xff0c;Brave浏览器还提供了“off record”模式&#xff0c;允许用户在不记录浏览历史的情况下使用浏览器。关于…

Cisco Packet Tracer实验(五)不同vlan间的通信简单配置

1&#xff0e;单臂路由(图) 环境&#xff1a;一台路由器&#xff0c;一台二层交换机&#xff0c;两台pc机 单臂路由&#xff08;Single Arm Routing&#xff09;是指在网络架构中&#xff0c;只有一个物理接口&#xff08;单臂&#xff09;连接到路由器三层交换机&#xff0c;而…

电脑微信聊天记录监控要怎么做?找谁找?

电脑微信聊天记录的监控通常涉及到使用特定的监控软件&#xff0c;这些软件设计用于企业管理和网络监控&#xff0c;以确保工作场所的通信安全和提高工作效率。以下是进行电脑微信聊天记录监控的一般步骤和建议&#xff1a; 如何进行监控&#xff1a; 1.明确目的与合法性&…

计算机组成原理之存储器(二)

文章目录 随机读写存储器RAM静态MOS存储单元与存储芯片动态MOS存储单元与存储芯片 半导体存储器逻辑设计存储器的读写以及刷新存储器的读写动态存储芯片的刷新 随机读写存储器RAM 静态MOS存储单元与存储芯片 静态RAM用半导体管的导通和截止来记忆&#xff0c;只要不掉电&#x…

Transformer中的Self-Attention和Multi-Head Attention

2017 Google 在Computation and Language发表 当时主要针对于自然语言处理&#xff08;之前的RNN模型记忆长度有限且无法并行化&#xff0c;只有计算完ti时刻后的数据才能计算ti1时刻的数据&#xff0c;但Transformer都可以做到&#xff09; 文章提出Self-Attention概念&…

python学习笔记-06

函数进阶 1.无参数无返回值&#xff1a;这类函数往往用于提示信息打印 2.无参数有返回值&#xff1a;这类函数往往用于数据采集过程中 3.有参数有返回值&#xff1a;这类函数一般是计算型的 4.有参数无返回值&#xff1a;这类函数多用于设置某些不需要返回值的参数设置1.局部变…

实验2:RIPv2的配置

由于RIPv1是有类别的路由协议,路由更新不携带子网信息,不支持不连续子网、VLSM、手工汇总和验证等&#xff0c;本书重点讨论RIPv2。 1、实验目的 通过本实验可以掌握&#xff1a; RIPv1和 RIPv2的区别。在路由器上启动RIPv2路由进程。激活参与RIPv2路由协议的接口。auto-sum…

一个提问高下立见?国产AI大模型冲上扣子广场PK

以“国产GPTs”出名的扣子&#xff0c;做出了GPT没有的功能。 6月12日&#xff0c;字节跳动旗下的AI应用开发平台“扣子”&#xff08;Coze国内版&#xff09;悄悄上线了新功能“模型广场”。 扣子是AI应用开发平台&#xff0c;无论用户是否有编程基础&#xff0c;都可以在扣子…

OpenTiny CCF开源创新大赛赛事指南,助力你赢取10W赛事奖金

第七届CCF开源创新大赛在国家自然科学基金委信息科学部的指导下&#xff0c;由中国计算机学会&#xff08;CCF&#xff09;主办&#xff0c;长沙理工大学、CCF 开源发展委员会联合承办。大赛面向国家“十四五”开源生态发展战略布局&#xff0c;聚焦“卡脖子”软件领域以及人工…