MySQL数据库--执行计划

执行计划

在mysql中提供了一个工具,帮助我们预判sql的执行时间,(只能给到一定参考,不一定能够完全判断正确)

+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
| id | select_type | table          | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra       |
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
|  1 | SIMPLE      | resume_library | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 21187 |    11.11 | Using where |
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+

其中比较重要的是type,他是sql性能中比较重要的标志,性能从低到高依次为:

ALL < index <range <index_merge <ref or null < eq_ref <system/const

  • ALL,全表扫描,数据表从头到尾找一遍。(一般就是没有命中索引,都是执行全部扫描)
select * from tb;特殊情况:如果有limit 的情况下就不会在继续向下扫描了
select * from tb limit 1;
  • index,全索引扫描,对索引进行从头到尾的扫描
explain select id from tb;
explain select name from tb;
  • range,对索引进行范围查找
explain select * from tb where id > 10;
explain select * from tb id in (11,22,33);
explain select * from tb where id between 10 and 20;
explain select * from tb where name >'alongdedaimazaibaocuo'
  • index_merge,合并索引,使用多个单列索引搜索
explain select * from tb where id = 10 or name='阿龙'
  • ref,根据索引直接去查找(非键)
select * from tb where name='along';
  • EQ_ref,连表操作时候常见
explain select tb.name,tb1.id from tb left join tb1 on tb.age=tb1.id; 
  • const,常量,表最多有一个匹配行,因为仅有一行,在这行的列值可被优化器剩余部分认为是常数,const表最快
explain select * from tb where id = 1;      --主键
expalin select * from tb where email='along@outlook.com'  --唯一索引
  • SYSTEM,系统,表中只有一行(=系统表),这话const链接类型的一种特例。
explain select * from (select * from tb where id=1 limit 1) as a;

执行计划的其他列:

id,查询顺序标识z,查询类型SIMPLE          简单查询PRIMARY         最外层查询SUBQUERY        映射为子查询DERIVED         子查询UNION           联合UNION RESULT    使用联合的结果...table,正在访问的表名partitions,涉及的分区(MySQL支持将数据划分到不同的idb文件中,详单与数据的拆分)。 一个特别大的文件拆分成多个小文件(分区)。possible_keys,查询涉及到的字段上若存在索引,则该索引将被列出,即:可能使用的索引。
key,显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL。例如:有索引但未命中,则possible_keys显示、key则显示NULL。key_len,表示索引字段的最大可能长度。(类型字节长度 + 变长2 + 可空1),例如:key_len=195,类型varchar(64),195=64*3+2+1ref,连表时显示的关联信息。例如:A和B连表,显示连表的字段信息。rows,估计读取的数据行数(只是预估值)explain select * from big where password ="025dfdeb-d803-425d-9834-445758885d1c";explain select * from big where password ="025dfdeb-d803-425d-9834-445758885d1c" limit 1;
filtered,返回结果的行占需要读到的行的百分比。explain select * from big where id=1;  -- 100,只读了一个1行,返回结果也是1行。explain select * from big where password="27d8ba90-edd0-4a2f-9aaf-99c9d607c3b3";  -- 10,读取了10行,返回了1行。注意:密码27d8ba90-edd0-4a2f-9aaf-99c9d607c3b3在第10行extra,该列包含MySQL解决查询的详细信息。“Using index”此值表示mysql将使用覆盖索引,以避免访问表。不要把覆盖索引和index访问类型弄混了。“Using where”这意味着mysql服务器将在存储引擎检索行后再进行过滤,许多where条件里涉及索引中的列,当(并且如果)它读取索引时,就能被存储引擎检验,因此不是所有带where子句的查询都会显示“Using where”。有时“Using where”的出现就是一个暗示:查询可受益于不同的索引。“Using temporary”这意味着mysql在对查询结果排序时会使用一个临时表。“Using filesort”这意味着mysql会对结果使用一个外部索引排序,而不是按索引次序从表里读取行。mysql有两种文件排序算法,这两种排序方式都可以在内存或者磁盘上完成,explain不会告诉你mysql将使用哪一种文件排序,也不会告诉你排序会在内存里还是磁盘上完成。“Range checked for each record(index map: N)”这个意味着没有好用的索引,新的索引将在联接的每一行上重新估算,N是显示在possible_keys列中索引的位图,并且是冗余的。

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

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

相关文章

CSP-S 2024 提高组初赛第一轮初赛试题及答案解析

完整试题&#xff0c;CSP-S-2024 CSP-S 2024 提高组初赛第一轮初赛试题及答案解析 一、 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 1 在 Linux 系统中&#xff0c;如果你想显示当前工作目录的…

哔哩哔哩自动批量删除抽奖动态解析篇(一)

本文的分析过程可能需要读者了解一点前后端数据交互和逆向分析的思路和基础&#xff0c;由于本人是新手&#xff0c;自己也处于摸索学习阶段&#xff0c;说的不对或者不好的地方敬请谅解。 一、删除动态流程分析 B站每条动态无论是转发他人的动态还是自己原创发布的动态都有一…

蓝桥杯1.小蓝的漆房

样例输入 2 5 2 1 1 2 2 1 6 2 1 2 2 3 3 3样例输出 1 2 import math import os import sys tint(input())#执行的次数 for j in range(t):n,kmap(int,input().split())#n为房间数 k为一次能涂的个数alist(map(int,input().split()))#以列表的形式存放房间的颜色maxvaluemath…

MySQL数据库的增删改查以及基本操作分享

1、登录MySQL数据库 首先找到你安装MySQL数据库的目录&#xff0c;然后在终端打开该目录&#xff0c;输入以下命令 mysql -u root -p然后输入密码就可以登录数据库了&#xff0c;看到如下页面就是登陆成功了 ***注意在终端操纵数据库时所有语句写完之后一定要加 &#xff1…

【基础算法总结】模拟篇

目录 一&#xff0c;算法介绍二&#xff0c;算法原理和代码实现1576.替换所有的问号495.提莫攻击6.Z字形变换38.外观数列1419.数青蛙 三&#xff0c;算法总结 一&#xff0c;算法介绍 模拟算法本质就是"依葫芦画瓢"&#xff0c;就是在题目中已经告诉了我们该如何操作…

【记录】大模型|Windows 下 Hugging Face 上的模型的通用极简调用方式之一

这篇文是参考了这篇&#xff0c;然后后来自己试着搭了一下&#xff0c;记录的全部过程&#xff1a;【翻译】Ollama&#xff5c;如何在 Ollama 中运行 Hugging Face 中的模型_ollama 导入 huggingface-CSDN 博客 另外还参考了这篇&#xff1a;无所不谈,百无禁忌,Win11 本地部署无…

【大模型】AutoDL部署AI绘图大模型Stable Diffusion使用详解

目录 一、前言 二、AI绘图大模型概述 2.1 AI绘图大模型介绍 2.2 AI绘图大模型特点 2.3 AI绘图大模型优势 三、主流的AI绘图大模型介绍 3.1 Midjourney 3.1.1 Midjourney介绍 3.1.2 Midjourney功能特点 3.1.3 Midjourney使用场景 3.2 Stable Diffusion 3.2.1 Stable …

【WRF运行第二期(Ubuntu)】ARWpost安装

WRF运行第二期&#xff1a;ARWpost安装 1 ARWpost介绍2 ARWpost安装2.1 ARWpos_V3安装前准备2.2 安装ARWpos2.3 修改Makefile文件2.4 修改configure.arwp文件2.5 生成可执行文件EXE2.6 修改namelist.ARWpost 参考 1 ARWpost介绍 ARWpost 是WRF模型后处理程序之一&#xff0c;用…

前端组件库Element UI 的使用

一、准备工作 1.确保安装了开发软件 VS Code&#xff08;此处可查阅安装 VS Code教程&#xff09;&#xff0c;确保相关插件安装成功 2.安装Node.js 和创建Vue项目&#xff08;此处可查阅安装创建教程&#xff09; 3.成功在VS Code运行一个Vue项目&#xff08;此处可查阅运行…

技术周总结 09.16~09.22 周日(架构 C# 数据库)

文章目录 一、09.16 周一1.1&#xff09;问题01&#xff1a; 软件质量属性中"质量属性场景"、"质量属性环境分析"、"质量属性效用树"、"质量属性需求用例分析"分别是什么&#xff1f;1.2&#xff09;问题02&#xff1a; 软件质量属性中…

MOS工作的三种状态及其分析——亚阈值区(截至区),深三极管区(又叫深线性区)和饱和区

1.MOS工作的三种状态及其分析——亚阈值区&#xff08;截至区&#xff09;&#xff0c;深三极管区&#xff08;又叫深线性区&#xff09;和饱和区。 1.1亚阈值区&#xff08;现代深亚微米工艺下的部分截至区&#xff09; 现代深亚微米工艺下&#xff0c;亚阈值区是指在Vgs小于阈…

WebLogic远程代码执行漏洞CVE-2020-14882

1.环境搭建 cd vulhub-master/weblogic/CVE-2020-14882 docker-compose up -d 2.登录后台 使用以下url绕过登录认证 主页 - base_domain - WLS 控制台http://47.121.211.205:7001/console/css/%252e%252e%252fconsole.portal 3.在目标服务器创建文件 http://47.121.211.…

Linux-gcc/g++

系列文章目录 C语言中的编译和链接 文章目录 系列文章目录一、编译过程gcc如何完成过程在这里涉及到一个重要的概念:函数库 二、动态库、静态库2.1 函数库一般分为静态库和动态库两种。 三、gcc选项gcc选项记忆 一、编译过程 具体过程在这一片c语言文章中讲解过:C语言中的编…

【记录】Excel|不允许的操作:合并或隐藏单元格出现的问题列表及解决方案

人话说在前&#xff1a;这篇的内容是2022年5月写的&#xff0c;当时碰到了要批量处理数据的情况&#xff0c;但是又不知道数据为啥一直报错报错报错&#xff0c;说不允许我操作&#xff0c;最终发现是因为存在隐藏的列或行&#xff0c;于是就很无语地写了博客&#xff0c;但内容…

STM32系统时钟

时钟为单片机提供了稳定的机器周期&#xff0c;从而使我们的系统能够正常的运行 时钟就像我们人的心脏&#xff0c;一旦有问题就整个都会崩溃 stm32有很多外设&#xff0c;但不是所有的外设都使用同一种时钟频率工作&#xff0c;比如我们的内部看门狗和RTC 只要30几k的频率就…

【PLW003】设备器材云端管理平台v1.0(SpringBoot+Mybatis+NodeJS+MySQL前后端分离)

设备器材云端管理平台是一种专为各种设备&#xff08;如教育行业中的实验设备、建筑行业中的施工设备等&#xff09;租赁或共享孵化的数字化管理工具&#xff0c;旨在融合数字化手段&#xff0c;提高各种设备器材的管理效率、 确保设备的安全稳定运行&#xff0c;并优化资源使用…

【Godot4.3】基于状态切换的游戏元素概论

提示 本文的设想性质比较大,只是探讨一种设计思路。完全理论阶段&#xff0c;不可行就当是闹了个笑话O(∩_∩)O哈哈~但很符合我瞎搞的气质。 概述 一些游戏元素&#xff0c;其实是拥有多个状态的。比如一个宝箱&#xff0c;有打开和关闭两个状态。那么只需要设定两个状态的图…

日志系统第五弹:同步日志器模块

日志系统第五弹&#xff1a;同步日志器模块 一、Logger类的设计1.功能2.如何打印日志3.设计 - - - 成员变量1.日志输出限制等级2.资源整合3.唯一标识4.互斥锁 4.设计 - - - 成员函数1.对外的日志打印接口2.抽象的日志实际落地接口3.其他接口 5.Logger类的框架 二、Logger类的实…

springboot地方特色美食分享系统-计算机毕业设计源码02383

摘要 本论文主要论述了如何使用SpringBoot技术开发一个地方特色美食分享系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述地方特色美食分享系统的当前背景以…

DHCP服务器搭建

1. DHCP工作原理 DHCP动态分配IP地址&#xff0c;客户端广播&#xff0c;服务端单播 2. DHCP服务器安装 2.1 安装DHCP # yum install -y dhcp-server 2.2 修改配置文件 # cd /etc/dhcp/ # ls # vi dhcpd.conf dhcpd.conf 主配置文件 第一行&#xff1a;全局dhcp服务器地…