【mysql 高级】explain的使用及explain包含字段的含义

news2025/2/25 14:57:22

explain的使用及explain包含字段的含义

  • 1.id
  • 2. select_type
  • 3.table
  • 4.type
  • 5.possible_keys
  • 6.key
  • 7.key_len
  • 8.ref
  • 9.rows
  • 10.Extra

使用explain关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何处理你的SQL语句的,从而分析你的查询语句或是表结构的性能瓶颈。

用法: explain+SQL语句(explain +SQL语句\G 竖着显示)
能干嘛:

  1. 查看表的读取顺序
  2. 数据读取操作的操作类型
  3. 哪些索引可以被使用
  4. 哪些索引被实际使用
  5. 表之间的引用
  6. 每张表有多少行可以被优化器查询

结构:
在这里插入图片描述

1.id

id:select查询的序列号,包含一组数字,表示查询中执行select字句或操作的顺序

  1. id相同,执行顺序从上至下
  2. id不同(如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行)

2. select_type

select_type: 查询类型

idselect_type
1SIMPLE。简单的select查询,查询中不包含子查询或者UNION
2PRIMARY。查询中若包含任何复杂的子部分,最外层查询则被标记为它
3SUBQUERY。在select或WHERE列表中包含了子查询
4DERIVED。在FROM列表中包含的子查询被标记为DERIVED(衍生),MYSQL会递归执行这些子查询,把结果放在临时表中。
5UNION。若第二个SELECT出现在UNION之后,则被标记为UNION,若UNION包含在FROM字句的子查询中,外层SELECT将被标记为:DERIVED
6UNION RESULT。从UNION表获取结果的SELECT

3.table

显示这一行数据是关于哪张表的

4.type

type: 访问类型

从最好到最差 : system>const>eq_ref>ref>range>index>ALL
(system>const>eq_ref>fulltext>ref_or_null>index_merge>unique_subque>index_subquery>range>index>ALL)

当访问类型为ALL,同时数据量为百万以上时,就要优化

一般来说,得保证查询至少达到range级别,最好能达到ref

system :是const类型的特例,表只有一行记录(等于系统表)。

const :通过索引一次就找到了,const用于比较primary key或者unique索引,因为只匹配一行数据,所以很快(如将主键置于where列表中,MySQL就能将该查询转换为一个常量)

eq_ref :唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常见于主键或唯一索引扫描。

ref :非唯一性索引扫描,返回匹配某个单独值的所有行。本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以它应该属于查找和扫描的混合体。

range :只检索给定范围的行,使用一个索引来选择行,key列显示使用了哪个索引,一般就是在你的where语句中出现了between,< ,>,in等的查询

这种范围扫描索引比全表扫描要好,因为它只需要开始于索引的某一个点,而结束另一个点,不用扫描全部索引。

index( Full Index Scan): index 与 ALL区别为inde类型只遍历索引树,这通常比ALL快

all( Full Table Scan): 将遍历全表以找到匹配的行

5.possible_keys

显示可能应用在这张表中的索引,一个或者多个(但不一定被查询实际使用)

6.key

实际使用的索引,如果为NULL,则没有使用索引(查询中若使用了覆盖索引,则该索引仅出现在key列表中) 覆盖索引:select 后面查询的字段和索引完全一致

7.key_len

表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精确性的情况下,长度越短越好。(显示的是索引字段最大可能长度,并非实际使用长度) 是根据表定义计算而得,不是通过表内检索出的

8.ref

哪些列或常量被用于查找索引列上的值 ,可能的话,是一个常数

9.rows

根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数。

10.Extra

包含不适合在其它列显示但十分重要的额外信息

  • Using filesort :说明mysql 对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。(MySQL中无法利用索引完成排序操作称为“文件排序”)一般有范围的话就会出现这种情况
  • Using temporary : 使用了临时表保存中间结果,MySQL在对查询结果排序时使用了临时表,常见于排序order by和group by。 (group by的时候尽量按照索引的顺序来,要不然就会产生临时表)
  • Using index : 表示相应的select操作中使用了覆盖索引,避免访问了表的数据行(如果同时出现using where,表面索引被用来执行索引键的查找 如果同时没有出现using where,表明索引用来读取数据而非执行查找动作)
  • Using where: 表明使用了where过滤
  • using join buffer :使用了连接缓存(表多了之后就会出现这个。出现了这个时,调大配置文件中的缓冲buffer)
  • impossible where :where字句的值总是false,不能用来获取任何元组
  • select table optimized away :在没有GROUPBY 字句的情况下,基于索引优化MIN/MAX操作或者对MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划完成的阶段即完成优化。

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

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

相关文章

面向OLAP的列式存储DBMS-10-[ClickHouse]的常用数组操作

参考ClickHouse 中的数据查询以及各种子句 ClickHouse 数组的相关操作函数&#xff0c;一网打尽 在关系型数据库里面我们一般都不太喜欢用数组&#xff0c;但是在 ClickHouse 中数组会用的非常多&#xff0c;并且操作起来非常简单。ClickHouse 里面提供了非常多的函数&#x…

文本生成视频Make-A-Video,根据一句话就能一键生成视频 Meta新AI模型

Meta公司&#xff08;原Facebook&#xff09;在今年9月29日首次推出一款人工智能系统模型&#xff1a;Make-A-Video&#xff0c;可以从给定的文字提示生成短视频。 Make-A-Video研究基于文本到图像生成技术的最新进展&#xff0c;该技术旨在实现文本到视频的生成&#xff0c;可…

[附源码]Python计算机毕业设计高校第二课堂管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

第十章 二叉树的各种遍历

第十章&#xff1a;二叉树的前、中、后序遍历前期准备:一、前序遍历1、遍历的思路2、遍历代码3、遍历图示二、中序遍历1、遍历的思路2、遍历代码三、后序遍历1、遍历的思路2、遍历代码三、遍历的应用1、计算二叉树中的节点个数2、二叉树叶子节点的个数3、二叉树的深度4、二叉树…

EMC原理-传导(共模、差模)与辐射(近场、远场)详解

目录&#xff1a; 第一章、EMC概念介绍 第二章、感应干扰(近场) 第三章、辐射干扰(远场) 第四章、差模干扰 第五章、共模干扰 ------------------------------------------------------------------------------------------------------------------------ 第一章、EMC…

ceph块存储在线扩容

记录&#xff1a;339 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;部署ceph-13.2.10集群。应用ceph块设备(ceph block device)&#xff1b;主要是创建ceph块存储和在线扩容相关操作。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 ceph版本&#xff1a;ceph-1…

牛顿法(牛顿拉夫逊)配电网潮流计算matlab程序

牛顿法配电网潮流计算matlab程序 传统牛顿—拉夫逊算法&#xff0c;简称牛顿法&#xff0c;是将潮流计算方程组F(X)0&#xff0c;进行泰勒展开。因泰勒展开有许多高阶项&#xff0c;而高阶项级数部分对计算结果影响很小&#xff0c;当忽略一阶以上部分时&#xff0c;可以简化对…

向NS-3添加新模块_ns3.37添加新模块_ns3.37不同版本模块移植

使用ns3的时候&#xff0c;我们需要调用很多模块&#xff0c;比如对wifi的简单功能进行仿真时&#xff1a; ns-3.35_third.cc_ns-3网络仿真工具wifi脚本解析_wifi脚本网络拓扑_ns-3third脚本全注释_基础ns-3_ns-3入门_ns-3third脚本解析_Part1_Mr_liu_666的博客-CSDN博客Intro…

WinSock的I/O模型

目录 一、 套接字的非阻塞工作模式 1.阻塞与非阻塞模式的概念 2.阻塞模式下能引起阻塞的套接字函数 3.两种模式的比较 2. 套接字非阻塞模式的设置方法——ioctlsocket 函数 3. 非阻塞模式下的编程方法 4. 非阻塞模式服务器端程序和客户端程序 二、select模型 1. 套接字…

信息系统综合测试与管理

本文包括软件测试模型、测试技术和测试管理。 一、测试基础 1、软件测试模型 所谓测试模型&#xff08;Test Model&#xff09;&#xff0c;是测试和测试对象的基本特征、基本关系的抽象。 1&#xff09;V模型 V模型实际是软件开发瀑布模型的变种&#xff0c;它反映了测试…

CSDN第十期竞赛

比赛详情&#xff1a; 通过这次的周赛让我受益颇多&#xff0c;这次的题目都是平常练习题目的变形&#xff0c;这次的竞赛是十分有意义的&#xff0c;加强对练习题的强化。 两道模拟题&#xff1a; 目录 1.熊孩子拜访 2.走楼梯 1.熊孩子拜访 题目描述 已知存在一个长度为n的…

FB显示学习期数据不足怎么办?

组合投放广告组和广告系列。组合投放广告组和广告系列有助于加快获得所需成效的速度&#xff0c;这意味着广告投放后很快便可看到稳定的成效。 扩大受众群。受众越多&#xff0c;用户完成您的优化事件的机会越多。 提高预算。如果您的预算过低&#xff0c;无法获得约 50 个​…

47、泛型

一、引入 1、传统方法&#xff1a; package generic_;import java.util.ArrayList; SuppressWarnings({"all"}) public class Generic01 {public static void main(String[] args) {ArrayList arrayListnew ArrayList();arrayList.add(new Dog("旺财",10)…

Spring项目结合Maven【实现读取不同的资源环境】

&#x1f4c3;目录跳转&#x1f4da;简介&#xff1a;&#x1f351;修改pom.xml&#x1f95e;修改application.yml&#x1f680; 演示&#xff1a;&#x1f4da;简介&#xff1a; 由于我们写功能的不能影响到线上环境的配置&#xff0c;所以每一次增加功能我们都要吧项目部署到…

STM32HAL库单ADC+DMA学习及测试记录

一、打开STM32CubeMX选择对应的芯片型号&#xff0c;后进入开发界面 1、双击“STM32CubeMX”软件打开&#xff0c;打开后如下图所示&#xff0c;选择红色框&#xff1b; 选择后可能会更新&#xff0c;等待更新完成即可&#xff0c;如下图&#xff1a; 2、选择开发芯片&#x…

【剧前爆米花--爪哇岛寻宝】面向对象的三大特性——封装、继承以及多态的详细剖析(上——继承)。

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于Java面向对象三大特性——继承的文章&#xff0c;在本篇文章中我会分享继承的一些基础语法以及类在继承时代码的底层逻辑和执行顺序。 目录 继承 需求 继承的定义及语…

nginx(六十八)proxy模块(八)nginx与上游的ssl握手

一 nginx作为客户端与上游的SSL/TLS握手 理解上&#xff1a; nginx作为客户端,此时类似浏览器的角色,发请求建立连接 nginx作为server端与下游进行SSL/TLS握手 ① nginx与后端选择什么样的协议 1&#xff09;如果nginx与上游是局域网内,一般通过http建立请求,不需要进行…

详解__int128,最大可用整数类型

前言&#xff1a;有些题目需要的数值刚好比 long long 的最大值大那么一点点&#xff0c;那么我们就可以用__int128 来搏一搏&#xff08;并不是所有OJ都支持这个数据类型&#xff0c;受编译标准影响&#xff09; 最大值是多少 int 最大值&#xff1a;2^(32-1)-1【受电脑字长影…

碳中和专题:碳足迹核算、碳中和顶刊论文、碳排放交易2022

&#xff08;1&#xff09;碳中和顶刊论文 1、数据来源&#xff1a;自身 2、具体内容&#xff1a; 01周宏春&#xff1a;碳循环经济内涵、实践及其碳中和的深远影响.pdf 02谢和平&#xff1a;碳中和目标下煤炭行业发展机遇.pdf 03秦阿宁&#xff1a;碳中和背景下的国际绿色技…

【FPGA】基于状态机实现自动售货机模拟

文章目录一、售货机功能二、售货机状态分析及模块划分三、代码实现四、上板验证一、售货机功能 此自动售货机模拟基于EP4CE6F17C8开发板实现&#xff0c;用按键&#xff0c;led灯&#xff0c;数码管表示各个输入输出 功能&#xff1a; 此自动售货机可以选择A&#xff08;三元…