Mysql-Explain-使用说明

Explain 说明

explain SELECT * FROM tb_category_report;

在这里插入图片描述

  • id:SELECT识别符,这是SELECT查询序列号。
  • select_type:表示单位查询的查询类型,比如:普通查询、联合查询(union、union all)、子查询等复杂查询。
  • table:表示查询的表
  • partitions:使用的哪些分区(对于非分区表值为null)。
  • type(重要)表示表的连接类型。
  • possible_keys:此次查询中可能选用的索引
  • key:查询真正使用到的索引
  • key_len:显示MySQL决定使用的索引size
  • ref:哪个字段或常数与 key 一起被使用
  • rows:显示此查询一共扫描了多少行,这个是一个估计值,不是精确的值。
  • filtered: 表示此查询条件所过滤的数据的百分比
  • Extra:额外信息
select_type
  1. simple: 普通查询,表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple。
explain select * from tb_seckill_goods;

在这里插入图片描述

  • primary: 查询的主要部分,一个需要union操作或者含有子查询的select位于最外层的单位查询的select_type即primary。
#包含Union 前面的为主要查询
explain select * from tb_seckill_goods a union select * from tb_seckill_goods b;

在这里插入图片描述

#包含子查询外层的查询为主要查询
explain select (select id from tb_seckill_goods where price=4.00) from tb_spu;

在这里插入图片描述

  1. union:连接查询
  • derived,在from列表中包含的子查询被标记为derived(衍生),MySQL会递归执行这些子查询,把结果放在临时表中
#from中写子查询那么这个子查询会被标记为derived
explain select * from (select * from tb_seckill_goods a union select * from tb_seckill_goods b) c;

在这里插入图片描述

  • union,若第二个select出现在union之后,则被标记为union:若union包含在from子句的子查询中,外层select将被标记为:derived
explain  select * from (select * from tb_seckill_goods a where item_id = '1'  union select  * from tb_seckill_goods b where item_id = '12' ) c;

在这里插入图片描述

  • union result 从union表获取结果的select
  1. dependent union: 依赖连接查询,与union一样出现在union 或union all语句中,但是这个查询要受到外部查询的影响
explain select * from tb_seckill_goods a where a.id in (select id from tb_seckill_goods b union select id from tb_seckill_goods c);

在这里插入图片描述

  1. subquery: 子查询,除了from字句中包含的子查询外,其他地方出现的子查询都可能是subquery
explain select (select id from tb_seckill_goods where price=4.00) from tb_spu;

在这里插入图片描述

  1. dependent subquery: 依赖子查询,与dependent union类似,表示这个subquery的查询要受到外部表查询的影响
explain select * from tb_seckill_goods a where a.id in (select id from tb_seckill_goods b union select id from tb_seckill_goods c);

在这里插入图片描述

  1. derived:派生表, from字句中出现的子查询,也叫做派生表,其他数据库中可能叫做内联视图或嵌套select
#from 中写子查询那么这个子查询会被标记为derived
explain select * from (select * from tb_seckill_goods a union select * from tb_seckill_goods b) c;

在这里插入图片描述

type

性能从好到差:

system
const
eq_ref
ref
fulltext
ref_or_null
unique_subquery
index_subquery
range
index_merge
index
ALL
  1. system:表中只有一行数据或者是空表。等于系统表,这是const类型的特列,平时不会出现,可以忽略不计
  2. const(重要):使用唯一索引或者主键,返回记录一定是1行记录的等值where条件时,通常type是const。其他数据库也叫做唯一索引扫描。
  3. eq_ref(重要):唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。
  4. ref(重要):非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。
  • 组合索引
  • 非唯一索引
  1. fulltext:全文索引检索,要注意,全文索引的优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引.
  2. ref_or_null:与ref方法类似,只是增加了null值的比较。实际用的不多。
  3. unique_subquery:用于where中的in形式子查询,子查询返回不重复值唯一值
  4. index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值,可以使用索引将子查询去重。
  5. range(重要):索引范围扫描,常见于使用>,<,is null,between ,in ,like等运算符的查询中。
  6. index_merge:表示查询使用了两个以上的索引,最后取交集或者并集,常见and ,or的条件使用了不同的索引,官方排序这个在ref_or_null之后,但是实际上由于要读取所有索引,性能可能大部分时间都不如range
  7. index(重要):select结果列中使用到了索引,type会显示为index。全部索引扫描,把索引从头到尾扫一遍,常见于使用索引列就可以处理不需要读取数据文件的查询、可以使用索引排序或者分组的查询。
  8. all(重要):这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。
  • type为const
    使用唯一索引或者主键,返回记录一定是1行记录的等值where条件时,通常type是const。
explain select * from tb_seckill_goods where id = 1;

在这里插入图片描述

  • eq_ref:唯一性索引
    连接字段主键或者唯一性索引
explain select * from tb_seckill_goods a left join tb_seckill_goods b on a.id=b.id;

在这里插入图片描述

  • ref:非唯一性索引
    非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。
explain select * from tb_seckill_goods where title= '华为5G手机';

在这里插入图片描述

  • range:范围查询
explain select * from tb_seckill_goods where title like '华为%';

在这里插入图片描述

  • index:查询结果列中使用索引
    select结果列中使用到了索引,type会显示为index。全部索引扫描,把索引从头到尾扫一遍,常见于使用索引列就可以处理不需要读取数据文件的查询、可以使用索引排序或者分组的查询(也就是覆盖索引不用回表查询)。
explain select title from tb_seckill_goods;

在这里插入图片描述

  • all:全表扫描
    这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。
Extra

01-Using filesort
使用了文件排序,说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成的排序操作称为“文件排序”。这种操作需要优化sql。

explain select price from tb_seckill_goods where price >100 order by cost_price;

在这里插入图片描述

#有索引使用了所以排序
explain select price from tb_seckill_goods where price >100 order by price;

在这里插入图片描述

02-Using index
表示相应的SELECT查询中使用到了索引,避免访问表的数据行,这种查询的效率很高!

  • 如果同时出现Using Where ,索引在where之后,用作查询条件(也就是说没有没有在where条件中使用到索引)
  • 如果没有同时出现Using Where ,索引在where之前,用作查询结果读取(也就是说我们在取列数据的时候和条件过滤的时候都用到了索引)
    03-Using where
    表示MySQL将对InnoDB提取的结果在SQL Layer层进行过滤,过滤条件字段无索引;
    04-Using join buffer
    表明使用了连接缓存,比如说在查询的时候,多表join的次数非常多,那么将配置文件中的缓冲区的join buffer调大一些。

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

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

相关文章

[设计模式Java实现附plantuml源码~行为型]请求的链式处理——职责链模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测 目录 多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预…

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)

一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…

极致成本,如何基于容器计算服务 ACS 打造企业级幻兽帕鲁私服 SaaS 服务?

作者&#xff1a;韩运韬&#xff08;青炽&#xff09; 《幻兽帕鲁》是一款最近大热的开放世界生存游戏。据报道。上市不到一周&#xff0c;《幻兽帕鲁》销量已突破 700 万份&#xff0c;成为名副其实的现象级游戏。根据游戏数据库网站 SteamDB 的数据显示&#xff0c;《幻兽帕…

QTabWidget和QTabBar控件样式设置(qss)

QTabWidget和QTabBar控件样式设置 1、QTabWidget样式可自定义的有哪些示例&#xff1a;效果图 2、QTabBar样式可自定义的有哪些示例效果图 1、QTabWidget样式可自定义的有哪些 QTabWidget::pane{} 定义tabWidgetFrameQTabWidget::tab-bar{} 定义TabBar的位置QTabWidget::tab{}定…

性能篇:如何解决高并发下 I/O 瓶颈?

我们可以有效地解决高并发下I/O瓶颈的问题&#xff0c;提升系统的性能。当然&#xff0c;实际场景中的优化可能涉及到更多的细节和技术&#xff0c;但希望这篇文章能为大家提供一些思路和方法。​ 引言 大家好&#xff0c;我是小米&#xff01;今天我们来聊一个在高并发场景…

【Netty技术专题】「原理分析系列」Netty强大特性之Native transports扩展开发实战

Netty强大特性之Native transports技术原理分析 背景介绍JNI概念介绍不同平台的JNI实现 使用Native transports库Maven的分类器&#xff08;Classifier&#xff09;使用Linux native transport使用MacOS/BSD native transport库构建native transport库Linux版本要求MacOS/BSD版…

制度下降算法c语言

#include<stdio.h> #include<string.h> int location0; //遍历字符串的当前位置 char arr[20]"idid*id#"; void error(); //错误提示函数 /* 每一个非终结符都构造一个函数 */ void E(char t); void Ep(char t); void T(char t); void Tp(char t);…

Python 线性回归可视化 并将回归函数放置到图像上

import matplotlib.pyplot as plt import scipy import seaborn as sns# 加载内置的数据集 df sns.load_dataset(tips)#create regplot p sns.regplot(xtotal_bill, ytip, datadf)#calculate slope and intercept of regression equation slope, intercept, r, p, sterr sci…

基于BatchNorm的模型剪枝【详解+代码】

文章目录 1、BatchNorm&#xff08;BN&#xff09;2、L1与L2正则化2.1 L1与L2的导数及其应用2.2 论文核心点 3、模型剪枝的流程 ICCV经典论文&#xff0c;通俗易懂&#xff01;论文题目&#xff1a;Learning Efficient Convolutional Networks through Network Slimming卷积后能…

《动手学深度学习(PyTorch版)》笔记7.6

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

CC工具箱使用指南:【获取字段的所有唯一值】

一、简介 这个工具的目的是获取选定要素图层的字段的所有唯一值。 一般就是用于查看&#xff0c;比如说看一下规划用地有多少种地类&#xff0c;都是哪些地类。 二、工具参数介绍 点击【信息获取】组里的【获取字段的所有唯一值】工具&#xff1a; 即可打开下面的工具框界面…

Codeforces Round 923 (Div. 3)E. Klever Permutation 找规律,有共同区间

Problem - E - Codeforces 目录 Source of idea: 思路&#xff1a; 代码&#xff1a; 另一个up的找规律的解法&#xff1a; Source of idea: Codeforces Round 923(A-F题解) - 哔哩哔哩 (bilibili.com) 思路&#xff1a; 上面up分析的很好。两个相邻区间也就端点不一样&…

干货总结!Dockerfile编写优秀实践

Dockerfile 优秀实践 1. 善用.dockerignore文件 Docker 是CS架构&#xff0c;这就意味着 Client 和 Server 可以在不同的主机上。在构建镜像的时候&#xff0c;Client 会把所有需要的文件打包发送给 Server&#xff0c;这些发送的文件叫做 build context 默认情况下&#xf…

深度学习的新进展:解析技术演进与应用前景

深度学习的新进展&#xff1a;解析技术演进与应用前景 深度学习&#xff0c;作为人工智能领域的一颗璀璨明珠&#xff0c;一直以来都在不断刷新我们对技术和未来的认知。随着时间的推移&#xff0c;深度学习不断迎来新的进展&#xff0c;这不仅推动了技术的演进&#xff0c;也…

百面嵌入式专栏(面试题)C语言面试题22道

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍C语言相关面试题 。 宏定义是在编译的哪个阶段被处理的?答案:宏定义是在编译预处理阶段被处理的。 解读:编译预处理:头文件包含、宏替换、条件编译、去除注释、添加行号。 写一个“标准”宏MIN,这个…

FPGA高端项目:解码索尼IMX327 MIPI相机转USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存UVC 时序USB3.0输出架构FPGA逻辑设计工程源码架构SDK软件工程源…

2023年ABC123公众号年刊下载(PDF电子书)

Part1 前言 大家好&#xff0c;我是ABC_123。2023年公众号正式更名为"希潭实验室"。除了分享日常红队攻防、渗透测试技术文章之外&#xff0c;重点加强了APT案例分析方面的内容。公众号关注度得到进一步提升&#xff0c;关注人数已达到3万5千人。原计划在2023年编写…

统一身份认证系统架构设计与实践总结

随着互联网的快速发展和应用的普及&#xff0c;人们在各个网站和应用上需要不同的账号和密码进行身份认证。为了解决这个问题&#xff0c;统一身份认证系统应运而生。本文将总结统一身份认证系统的架构设计与实践经验&#xff0c;帮助读者了解如何设计和实现一个高效、安全的统…

2024幻兽帕鲁服务器多少钱一套?

2024年幻兽帕鲁服务器价格表更新&#xff0c;阿里云、腾讯云和华为云Palworld服务器报价大全&#xff0c;4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元&#xff0c;阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表&#xff0c;多配置报价&#xff1a; 幻兽帕鲁…