MySQL explain学习(MySQL版本5.7.25)

2023-05-16

MySQL explain学习(MySQL版本5.7.25)

  • id
  • select_type
  • table
  • partitions
  • type(重要)
  • possible_keys
  • key
  • key_len
  • ref
  • rows
  • filtered
  • Extra

explain 包含以下几个字段
在这里插入图片描述

id

表示SQL执行的顺序,id相同从上往下执行,id不同时,值越大优先级别越高,有一种特殊情况,id可能为null,就是当使用union的时候,会有一张去重后的临时表
在这里插入图片描述

select_type

  1. SIMPLE:简单的select(不使用union或者子查询)
    在这里插入图片描述

  2. PRIMARY:最外层的select
    在这里插入图片描述

  3. UNION:查询使用了union或者union all,使用union时会多一个UNION RESULT
    union allunion

  4. UNION RESULT:查询使用union,产生的一张临时表,并且它的id为Null
    在这里插入图片描述

  5. DEPENDENT UNION:在union或union all 形成的集合查询中
    在这里插入图片描述

  6. SUBQUERY:子查询中的第一个SELECT
    在这里插入图片描述

  7. DEPENDENT SUBQUERY:子查询中的第一个select,取决于外面的查询
    在这里插入图片描述
    子查询B的查询依赖于外层A的查询
    在这里插入图片描述
    我的理解是,A表查询出来的结果会逐条执行子查询B

  8. DERIVED:派生表,

table

输出结果集的表是关于哪一张表,有时候不是真实的表名

  1. derived(x):x是数字,代表执行的id
  2. union<x,y>:在使用union时,生成的临时表名,x,y分别对应的执行id

partitions

匹配的分区,目前没有学习到

type(重要)

  1. system:表只有一行,是const的特殊情况
  2. const:最多只有一行,const用于primary key(主键)或者unique(唯一键)的比较
  3. eq_ref:特点是使用=,而且索引的所有部分都参与join且索引是主键或非空唯一键的索引
  4. ref:查找条件列使用了索引而且不为主键和唯一索引
  5. range:基于索引的。同时除了显而易见的between,and以及’>’,’<'外,in和or也是索引范围扫描
  6. index:index类型和ALL类型一样,ALL全表扫描,index是扫描索引树
  7. ALL:全表扫描

possible_keys

指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若在索引,则该索引将被列出,但不一定被查询使用

key

表明的是这次查找中所用到的索引

key_len

表示索引字段的最大可能值,并非时间使用长度,可以通过该列计算查询中使用的索引长度

长度越短越好

ref

显示索引的哪一列被使用了

rows

显示MySQL执行查询时必须检查的行数

filtered

表示返回结果的行数占需要读取行数的百分比
值越大越好

Extra

  1. Using where:SQL使用了where条件过滤数据(使用了where条件的SQL,需要配合explain结果中的type来综合判断)
  2. Using index:SQL所需要返回的所有列数据均在一棵索引树上,而无需访问实际的行记录(这类SQL语句往往性能较好)
  3. Using index condition:确实命中了索引,但不是所有的列数据都在索引树上,还需要访问实际的行记录
  4. Using filesort:得到所需结果集,需要对所有记录进行文件排序
    (这类SQL语句性能极差,在一个没有建立索引的列上进行了order by,就会触发filesort,常见的优化方案是,在order by的列上添加索引,避免每次查询都全量排序)
  5. Using temporary:需要建立临时表(temporary table)来暂存中间结果
    (这类SQL性能较低,典型的,group by和order by同时存在,且作用于不同的字段时,就会建立临时表,以便计算出最终的结果集)
  6. Using join buffer (Block Nested Loop):需要进行嵌套循环计算
  7. 待补充
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL explain学习(MySQL版本5.7.25) 的相关文章

  • Mysql - Mysql2::错误:字符串值不正确:

    所以我建造了一个刮刀并拉动一些物体 问题是有些是外语 它使 mysql 数据库有点崩溃 这是我得到的错误 知道我能用这个做什么吗 谢谢 Mysql2 错误 列的字符串值不正确 xC5 x8Dga 第 1 行的 描述 插入sammiches
  • 如何用 UNION 运算符替换 OR 运算符?

    这是我的查询 SELECT h id h subject h body matnF h amount h keywords tags h closed h author id author h AcceptedAnswer h type h
  • MySQL Workbench 6.0 错误无法获取管理员的管理访问权限?

    我在这里使用 MySQL Workbench 6 0 当我选择服务器状态时 出现此错误 对此 我尝试在Google和StackOverflow上寻找解决方案 e g 这个结果 https stackoverflow com question
  • MySQL用户创建的临时表已满

    我使用内存引擎创建了一个临时表 如下所示 CREATE TEMPORARY TABLE IF NOT EXISTS some text id INT DEFAULT 0 string varchar 400 DEFAULT engine m
  • 通过货币换算获取每种产品类型的最低价格

    我想选择每种产品类型中最便宜的 包括运费 价格转换为当地货币 最便宜 产品 价格 产品 运费 seller to aud 我的数据库有如下表 PRODUCTS SELLERS id type id seller id price shipp
  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • 通过连接从两个表中删除?

    我有两个表如下 tbl1 tbl2 id article id title image whole news tags author older datetime 其中 tbl1 id gt tbl2 article id 如何从两个表中删
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)

    当我尝试连接 mysql 时出现以下错误 Can t connect to local MySQL server through socket var lib mysql mysql sock 2 这个错误有解决办法吗 其背后的原因可能是什
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • java中的字符串排序

    要求 xff1a 对 34 abc 34 34 fcc 34 34 egfd 34 34 asd 34 34 rtgh 34 34 deghk 34 34 fcc 34 字段进行排序 xff0c 要求满足其为升序排列同时每个字符串里也是升序
  • 基于PySide6的MySql数据库快照备份与恢复软件

    db camera 软件介绍 db camera是一款MySql数据库备份 xff08 快照保存 xff09 与恢复软件 功能上与dump类似 xff0c 但是提供了相对有好的交互界面 xff0c 能够有效地管理导出的sql文件 使用场景
  • 2023-04-14 Linux连接WiFi常用命令,用命令打开、搜索、连接wifi,在buildroot 嵌入式系统上测试,用 wifi_start.sh WIFI名称 WIFI密码 命令格式连接

    一 ifconfig 命令查看打开的网卡 二 ifconfig a 命令查看所有的网卡 xff0c 包括关闭的 三 打开WIFI命令 xff1a ifconfig wlan0 up xff1b 关闭WIFI命令 xff1a ifconfig
  • 基于ubuntu20.04的anaconda和cuda安装

    文章目录 使用服务器训练深度学习模型环境安装 ubuntu20 04 ubuntu 20 04安装anaconda安装显卡驱动安装cuda安装 xff08 cuda 11 0 cudnn安装 cudnn 11 0 使用服务器训练深度学习模型
  • 创建Web天气插件之vue3.0(包含2.x)

    1 首先选择一个天气插件 xff0c 这里小编使用和风天气插件 xff0c 见和风天气插件 和风天气插件产品 xff0c 免费 跨终端 适配你的网站 APP 公众号 2 小编这里写的是vue3 0的移动端项目 xff0c 所以使用的是天气简
  • MySQL占用CPU过高,排查原因及解决的多种方式法

    一 mysql中的wait timeout坑 mysql gt show variables like 39 timeout 39 首先你要明白 wait timeout 指的是mysql在关闭一个非交互的连接之前所要等待的秒数 xff0c
  • Linux系统Debian安装

    虚拟机VMware安装Debian 小白教程 最近学习中顺便做了个文档 xff0c 下载 一 下载Debian 网址 xff1a https www debian org distrib 二 安装Debian8 1 选择稍后安装操作系统 2
  • sqlite3

    一 版本 从 www sqlite org 网站可下载到最新的 sqlite 代码和编译版本 写此文章时 xff0c 最新代码是 3 3 17 版本 二 基本编译 把 sqlite3 c 和 sqlite3 h 添加到工程 xff0c 再新
  • arduino esp8266开发板下载出错解决方法

    常规 arduino esp8266开发板下载安装流程 xff1a 第一步 xff0c 在arduino界面 xff0c 选择 文件 首选项 xff1a 找到附加开发板管理器网址 xff0c 将下面网址复制进去 xff1a http ard
  • linux C编程4-系统信息/时间/内存分配/随机数/定时器

    目录 1 获取系统信息 1 1 uname 函数 1 2 sysinfo 函数 1 3 gethostname 函数 1 4 sysconf 函数 1 5 getpagesize 函数 2 时间 日期 2 1 查看utc时间 2 2 查看系
  • IntelliJ IDEA插件之下载和安装方式

    IntelliJ IDEA插件下载与安装 下载方式官网下载如下图 IDEA内下载如下图 安装方式直接安装如下图 下载插件到本地安装如下图 下载方式 官网下载 如下图 IDEA内下载 如下图 进入Settings页面 xff08 File g
  • IntelliJ IDEA插件之TranslationPlugin

    IntelliJ IDEA插件之TranslationPlugin 下载地址安装插件概述使用如下图 下载地址 下载地址 安装插件 安装方式 概述 翻译他人代码或者源码中的英文 使用如下图
  • IntelliJ IDEA插件之Power Mode II

    IntelliJ IDEA插件之Power Mode II 下载地址安装插件概述使用如下图 下载地址 下载地址 安装插件 安装方式 概述 Power Mode II是写代码的时候体验狂拽酷炫的效果 使用如下图
  • IntelliJ IDEA插件之Background Image Plus +

    IntelliJ IDEA插件之Background Image Plus 43 下载地址安装插件概述 下载地址 下载地址 安装插件 安装方式 概述 IDEA 背景修改插件
  • IntelliJ IDEA插件之Free MyBatis plugin

    IntelliJ IDEA插件之Free MyBatis plugin 下载地址安装插件概述 下载地址 下载地址 安装插件 安装方式 概述 mapper接口与对应xml文件对应
  • MySQL Workbench 8.0 CE 汉化包下载

    MySQL Workbench 8 0 CE 汉化包下载 下载地址 xff1a 汉化文件下载 下载提示 xff1a 下载过程进度文件页面右键另存为即可保存文件到本地 1 把下载好的文件后放到此目录下替换此文件 C Program Files
  • IntelliJ IDEA插件之CodeGlance

    IntelliJ IDEA插件之CodeGlance 下载插件安装插件概述 下载插件 下载地址 安装插件 安装方式 概述 将类似于Sublime中的代码的微型地图嵌入到编辑器窗格中 使用您自定义的颜色对亮色和深色主题进行语法突出显示
  • IDEA Easy Code使用记录

    下载安装 xff08 忽略 xff09 设置 设置在idea的 Other Settings里面 分4个选项 Type Mapper 类型映射 xff08 数据字段和java包装器映射 xff09 Template Setting 模板设置
  • windows 10 安装MySQL5.7.25(支持多个MySQL实例)

    windows 10 安装MySQL5 7 25 下载安装包解压到对应路径 创建my ini 配置文件 xff0c 内容如下 span class token punctuation span mysql span class token
  • MySQL explain学习(MySQL版本5.7.25)

    MySQL explain学习 xff08 MySQL版本5 7 25 xff09 idselect typetablepartitionstype xff08 重要 xff09 possible keyskeykey lenrefrows