MySQL-Explain简版

news2024/11/17 13:44:42

文章目录

  • 前言
  • 1.什么是explain
  • 2.explain有什么用
  • 3.explain怎么用
    • 理解explain的列代表的意思
      • id列
      • select_type列
      • table列
      • partitions列
      • type列
      • possible_keys列
      • key列
      • key_len列
      • ref列
      • rows列
      • Extra列

前言

没必要记吧,忘了直接查

1.什么是explain

在select语句之前增加explain关键字,执行后MySQL就会返回执行这条sql语句的计划信息

2.explain有什么用

  1. 在select语句之前增加explain关键字,执行后MySQL就会返回这条sql的执行计划的信息,而不是执行sql
  2. 所谓sql执行计划大概指:
    ● 表的读取顺序数据读取操作的操作类型。
    ● 哪些索引可以使用
    ● 哪些索引被实际使用
    ● 表之间的引用
    ● 每张表有多少行被优化器查询
  3. 但如果from中包含子查询,MySQL仍会执行该子查询,并把子查询的结果放入临时表中

3.explain怎么用

理解explain的列代表的意思

id列

一个select词出现意味着一个id

  1. 有几个select就有几个id,一个id表示一次select
  2. id是按照select出现的顺序增长的,id列的值越大优先级越高
  3. id相同则是按照执行计划列从上往下执行,id为空则是最后执行。

select_type列

表示对应行是简单查询还是复杂查询。
下面是该列每个值代表的意思

  1. simple:不包含子查询和union的简单查
  2. primary:复杂查询中最外层的select
  3. subquery:包含在select中的子查询(不在from的子句中)
  4. derived:包含在from子句中的子查询。mysql会将查询结果放入一个临时表中
  5. union:在union中的第二个和随后的select,UNION RESULT为合并的结果

table列

表示当前行访问的是哪张表。

  1. 当from中有子查询时,table列的格式为《derivedN》,表示当前查询依赖id=N行的查询,所以先执行id=N行的查询。
  2. 当有union查询时,UNION RESULT的table列的值为《union1,2》,1和2表示参与union的行id
  3. 大概如下
    在这里插入图片描述

partitions列

查询将匹配记录的分区。

  • 对于非分区表,该值为 NULL

type列

此列表示关联类型或访问类型。
依次从最优到最差分别为:system > const > eq_ref > ref > range > index > all。

  1. 也就是MySQL决定如何查找表中的行。
  • NULL:MySQL能在优化阶段分解查询语句,在执行阶段不用再去访问表或者索引
  • system、const:MySQL对查询的某部分进行优化并把其转化成一个常量(可以通过show warnings命令查看结果)。
  • eq_ref:主键或唯一键索引被连接使用,最多只会返回一条符合条件的记录。简单的select查询不会出现这种type。
  • range:通常出现在范围查询中,比如in、between、大于、小于等。使用索引来检索给定范围的行。
  • index:扫描全索引拿到结果,一般是扫描某个二级索引,二级索引一般比较少,所以通常比ALL快一点。
  • ALL:全表扫描,扫描聚簇索引的所有叶子节点。

possible_keys列

此列显示在查询中可能用到的索引

  • 如果该列为NULL,则表示没有相关索引,可以通过检查where子句看是否可以添加一个适当的索引来提高性能

key列

此列显示MySQL在查询时实际用到的索引。

  • 在执行计划中可能出现possible_keys列有值,而key列为null,这种情况可能是表中数据不多,MySQL认为索引对当前查询帮助不大而选择了全表查询
  • 如果想强制MySQL使用或忽视possible_keys列中的索引,在查询时可使用force index、ignore index。

key_len列

此列显示MySQL在索引里使用的字节数

key_len计算规则:

         字符串:

          char(n):n个数字或者字母占n个字节,汉字占3n个字节

          varchar(n):  n个数字或者字母占n个字节,汉字占3n+2个字节。+2字节用来存储字符串长度。

      数字类型:

          tinyint:1字节      smallint:2字节               int:4字节             bigint:8字节

      时间类型

          date:3字节        timestamp:4字节          datetime:8字节

ref列

此列显示key列记录的索引中,表查找值时使用到的列或常量。常见的有const、字段名

rows列

此列是MySQL在查询中估计要读取的行数。注意这里不是结果集的行数。

Extra列

此列是一些额外信息。常见的重要值如下:

            1)Using index:使用覆盖索引(如果select后面查询的字段都可以从这个索引的树中获取,不需要通过辅助索引树找到主键,再通过主键去主键索引树里获取其它字段值,这种情况一般可以说是用到了覆盖索引)。

            2)Using where:使用 where 语句来处理结果,并且查询的列未被索引覆盖。

            3)Using index condition:查询的列不完全被索引覆盖,where条件中是一个查询的范围。

            4)Using temporary:MySQL需要创建一张临时表来处理查询。出现这种情况一般是要进行优化的。

            5)Using filesort:将使用外部排序而不是索引排序,数据较小时从内存排序,否则需要在磁盘完成排序。

            6)Select tables optimized away:使用某些聚合函数(比如 max、min)来访问存在索引的某个字段时。

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

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

相关文章

2023-7-26-第二十三式解释器模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

Apache Dubbo CVE-2021-36162 挖掘过程

01 漏洞背景 发现该漏洞的起因是在分析 CVE-2021-30181 的脚本注入补丁的时候,意外发现了几个已被修复的 yaml 反序列化漏洞,还以为是未公开的Nday,查询后发现其实对应的是 CVE-2021-30180 漏洞的修复代码。通过查看补丁可以知道&#xff0c…

uniapp使用echarts

uniapp使用echarts 1.下载资源包2.引入资源包3.代码示例注意事项 1.下载资源包 https://echarts.apache.org/zh/download.html 2.引入资源包 将资源包放入项目内 3.代码示例 <template><div style"width:100%;height:500rpx" id"line" ref&…

Docker--harbor Docker--registry 私有仓库部署与管理

官方组件registry搭建私有仓库 registry服务器设置 拉取 registry 镜像 docker pull registry 开启registries容器 docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restartalways --name registry registry:latest 客户机设置 添加私有仓库地址 使用配置文…

【笔试强训选择题】Day30.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

前端学习——Vue (Day3)

生命周期 生命周期 & 生命周期四个阶段 Vue 生命周期函数 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"…

hdvp.

hdvp:外部函数文件&#xff0c;函数定义在hdvp中可以传输给任何hdev使用&#xff0c;即可以发给别人使用。同时允许对hdvp进行加密

力扣热门100题之轮转数组【中等】

题目描述 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6…

给el-table实现列显隐

用过若依的都知道&#xff0c;在使用el-table 时候&#xff0c;实现列显隐效果是要给每个列加v-if 判断的&#xff0c;这种代码过于繁琐&#xff0c;于是翻看el-table包的代码&#xff0c;调试后发现内部的【插入】和【删除】两个方法可以达到我们要的效果。 项目不提供源码&a…

周报230722

周报230722 日期范围&#xff1a;2023-07-19——2023-07-22 学习内容 学习内容/任务进度具体内容评测分班已完成完成评测笔测试题、机测试题&#xff0c;分班搭建博客已完成使用阿里云服务器&#xff0c;利用宝塔搭建halo。搭建博客教程上传博客已完成每日上传当天所学知识相…

(嵌套虚拟机)ovs+floodlight搭建sdn——模拟并检测ddos攻击

参考博文-CSDN-九瓜&#xff08;作者&#xff09;-使用OpenvSwitch KVM搭建SDN网络、完整流程 ovs安装&#xff0c;需对应版本&#xff0c;使用uname -a查看内和版本&#xff0c;官网连接http://www.openvswitch.org//download/ 如果觉得2.17.7就可以&#xff1a;那么使用命…

mybatis日志工厂

前言&#xff1a; 如果一个数据库操作&#xff0c;出现异常&#xff0c;我们需要排错&#xff0c;日志就是最好的助手 官方给我们提供了logImpl&#xff1a;指定 MyBatis 所用日志的具体实现&#xff0c;未指定时将自动查找。 默认工厂&#xff1a; 在配置文件里添加&#xf…

vue中使用vab-magnifier实现放大镜效果

效果图如下&#xff1a; 1. 首先&#xff0c;使用npm或yarn安装vab-magnifier插件&#xff1a; npm install vab-magnifier或 yarn add vab-magnifier2. 在Vue组件中引入vab-magnifier插件&#xff1a; import VabMagnifier from vab-magnifier; import vab-magnifier/lib…

边缘计算在交通行业的应用有哪些?

随着我国城市化进程的不断加快。人民生活水平不断提高。随之带来的私家车辆增多导致的交通拥堵问题。智慧交通作为一种新兴的交通模式&#xff0c;对传统交通行业产生了深远的影响。 智慧交通利用边缘计算和物联网等先进人工智能技术&#xff0c;赋能传统交通行业数字化升级。…

【JavaEE初阶】Tomcat安装与使用及初识Servlet

文章目录 1. Tomcat的安装与使用1.1 Tomcat安装1.2 Tomcat的启动1.3 Tomcat部署前端页面 2. Servlet2.1 Servlet是什么2.2 第一个Servlet程序2.3 常见错误 1. Tomcat的安装与使用 1.1 Tomcat安装 在浏览器中搜索Tomcat,打开官方网页.Tomcat官网 点击下载Tomcat8. 点击下载压…

Java语言简介

个人记录学习Java的笔记&#xff0c;内容不全面不准确 Java历史 Java是一种简单易用&#xff0c;与平台无关&#xff0c;完全面向对象的编程语言。Java诞生于20世纪90年代初期&#xff0c;前身是SUN公司为智能化家电开发的Oak语言&#xff0c;它的基础是C与C语言&#xff0c;由…

什么是iPaaS?浅谈iPaaS的未来发展方向

什么是iPaaS&#xff1f; iPaaS&#xff0c;即集成平台即服务&#xff08;Integration Platform as a Service&#xff09;&#xff0c;是一种云计算服务模型&#xff0c;旨在帮助企业简化应用程序和数据的集成过程。通过iPaaS&#xff0c;企业可以在云环境中轻松地将不同的应…

给你推荐一款快速通过 typescript 生成 jsonschema 的包处理器

theme: github fast-typescript-to-jsonschema Typescript 生成 jsonschema 数据插件 性能 案例 interface AAA {a: number;b: string;c: boolean; }解析器解析耗时fast-typescript-to-jsonschema15mstypescript-json-schema5430ms 特性 编译Typescript文件以获取完整的类…

基于因果关系知识库的因果事件图谱构建、文本预处理、因果事件抽取、事件融合等

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

postgresql四种逻辑复制的状态

准备 CreateCheckpoint&#xff0c;或者bgwriter启动时&#xff0c;或者创建logicalreplicationslot时都会调用LogStandbySnapshot 记录一个XLOG_RUNNING_XACTS类型的日志。日志中记录了所有提交的事务的xid(HistoricSnapshot) 启动&#xff08;SNAPBUILD_BUILDING_SNAPSHOT&…