MySQL--执行计划

news2024/10/6 22:30:48

一、执行计划

1.介绍

        执行计划是sql在执行时,优化器优化后,选择的cost最低的方案

        通过desc、explain可以查看sql的执行计划

2.如何查看执行计划

table语句操作的表,在多表时才有意义
type查找类型
possible_keys可能会用到的索引
key最终选择的索引
key_len索引的覆盖长度,在联合索引时才有意义
rows估算的要扫描的行数
Extra额外信息

二、分析执行计划

+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | city  | NULL       | const | PRIMARY       | PRIMARY | 4       | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+

1.select_type列

SIMPLE简单查询,不包含子查询或union的查询     
PRIMARY        查询中包含子查询,那么最外层的查询被标记为PRIMARY      
SUBQUERYselect列表中的子查询
DEPENDENT SUBQUERY依赖外部结果的子查询
UNIONunion操作的第二个或之后的查询只为union
DEPENDENT_UNION当union作为子查询,第二个或第二个后的查询的s-t值
UNION RESULTunion产生的结果集
DERIVED出现在from子句中的子查询(派生表)

2.table列

        table name:展示数据库表名,如果取了别名就展示别名

        union M,N:由ID为M,N查询union产生的结果集

        derived N / subquery N:由ID为N的查询产生的结果,通常是一个子查询的临时表

3.partition列

        对于查询分区表,显示查询的分区ID;对于未分区表,显示NULL

4.type列--type的取值体现了mysql访问数据的一种方式

        以下按照性能高低排序:业务中至少应该是range以上

system这是const连接类型的特例,当查询的表只有一行时使用
const表中有且只有1个匹配的行时使用,如where id=‘1’,是查询效率最高的方式
eq_ref唯一索引或者主键查询,对应每个索引列,表中只有1条记录与之匹配
ref  非唯一索引查找,返回匹配每个单独值的所有行
ref_or_null附加了对null值列的查询
index_merge使用了索引合并优化
range索引范围扫描,常见于between、>、<、in、or这样的查询条件
index全索引扫描,同ALL的区别是,遍历的是索引树,不是表
ALL全表扫描,是效率最差的连接方式

5.Extra列

Distinct唯一操作
Not exists使用Not exists优化查询
Using Filesort

使用文件来进行排序,通常会出现在order by或者group by中

将额外排序的字段写入联合索引,可以解决Using Filesort

Using index

使用覆盖索引进行查询,意思是查询内容用索引来获取,不需要对表进行访问

key列有值,而possible_key是null

Using temporary使用临时表处理,常见于排序,子查询,分组查询
Using where

6.key_len列

        key_len是索引覆盖长度,一般在联合索引时用到:idx(a,b,c)--->a+b+c为key_len\

        key_len的影响因素:

        1)字符集:utf8 ——n*3

                            utf8mb4 ——n*4

        2)非空:设了非空长度不加,没设非空长度+1

        3)数据类型:tinyint=1,int=4,char(10)=10*3,varchar(10)=10*3+2,timestamp=4,datetime=8

       

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

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

相关文章

基于python数据挖掘在淘宝评价方面的应用与分析,技术包括kmeans聚类及情感分析、LDA主题分析

随着电子商务的蓬勃发展&#xff0c;淘宝作为中国最大的在线购物平台之一&#xff0c;吸引了大量的消费者进行购物并留下了大量的客户评价。这些客户评价中包含了丰富的消费者意见和情感信息&#xff0c;对于商家改进产品、提升服务质量以及消费者决策都具有重要的参考价值。 …

JVM学习-垃圾回收(一)

什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;这个对象就是需要被回收的垃圾如果不及时对内存的垃圾进行清理&#xff0c;垃圾对象所占用的内存空间会一直保留到应用程序结束&#xff0c;被保留的空间无法被其它对象所用&#xff0c;甚至可能导致内存溢…

视频批量剪辑神器大揭秘:一键删减片头片尾,高效打造精彩视频内容!

在数字化时代的浪潮中&#xff0c;视频已经成为人们传递信息、分享生活的重要载体。无论是制作一部精美的宣传片&#xff0c;还是剪辑一段有趣的短视频&#xff0c;视频时长都是至关重要的因素。然而&#xff0c;很多视频创作者在调整视频时长时遇到了困难&#xff0c;耗费了大…

实体-联系图

为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型(也称为信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境, 而且与在软件系统中的实现方法无关。…

计算几何-扫描线算法

1、定义 计算几何中&#xff0c;扫描线算法&#xff08;Sweep Line Algorithm&#xff09;或平面扫描算法&#xff08;Plane Sweep Algorithm&#xff09;是一种算法模式&#xff0c;虚拟扫描线或扫描面来解决欧几里德空间中的各种问题&#xff0c;一般被用来解决图形面积&am…

Java面试八股之Synchronized和ReentrantLock的区别

Synchronized和ReentrantLock的区别 实现级别&#xff1a; synchronized是Java的一个关键字&#xff0c;属于JVM层面的原生支持&#xff0c;它通过监视器锁&#xff08;Monitor&#xff09;来实现同步控制&#xff0c;无需手动获取和释放锁。 ReentrantLock是java.util.conc…

免费插件集-illustrator插件-Ai插件-文本对象和文本段落互转

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;进行文本对象和文本段落互转。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/878…

【408真题】2009-16

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

计算机毕业设计Hadoop+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据

2024 届本科毕业论文&#xff08;设计&#xff09; 基于Hadoop的地震预测的 分析与可视化研究 姓 名&#xff1a;____田伟情_________ 系 别&#xff1a;____信息技术学院___ 专 业&#xff1a;数据科学与大数据技术 学 号&#xff1a;__2011103094________ 指导…

Sam Altman微软Build 2024最新演讲:AI可能是下一个移动互联网

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

vue+echart :点击趋势图中的某一点或是柱状图,出现弹窗,并传输数据

样式 在趋势图中点击某一个柱状图&#xff0c;出现下面的弹窗 代码实现 主要是在趋势图页面代码中&#xff0c;在初始化趋势图的设置中&#xff0c;添加对趋势图监听的点击方法 drawChart() {const chartData this.chartData;let option {};if (!chartData.xData?.len…

【LVGL_Linux安装NXP的Gui-Guider】

GUI Guider是恩智浦为LVGL开发了一个上位机GUI设计工具&#xff0c;可以通过拖放控件的方式设计LVGL GUI页面&#xff0c;加速GUI的设计。 虽然他只支持自家芯片&#xff0c;但是应用层我们可以直接拿来用作其他MCU上。 GUI-Guider 下载 NXP官网下载&#xff1a;链接&#xff1…

SpringBoot 集成 ChatGPT(附实战源码)

建项目 项目结构 application.properties openai.chatgtp.modelgpt-3.5-turbo openai.chatgtp.api.keyREPLACE_WITH_YOUR_API_KEY openai.chatgtp.api.urlhttps://api.openai.com/v1/chat/completionsopenai.chatgtp.max-completions1 openai.chatgtp.temperature0 openai.cha…

超值分享50个DFM模型格式的素人直播资源,适用于DeepFaceLive的DFM合集

50直播模型&#xff1a;点击下载 作为直播达人&#xff0c;我在网上购买了大量直播用的模型资源&#xff0c;包含男模女模、明星脸、大众脸、网红脸及各种稀缺的路人素人模型。现在&#xff0c;我将这些宝贵的资源整理成合集分享给大家&#xff0c;需要的朋友们可以直接点击下…

前端中 dayjs 时间的插件使用(在vue 项目中)

Day.js中文网 这是dayjs的中文文档 里面包括了使用方法 下面我来详细介绍一下这个插件的使用 Day.js 可以运行在浏览器和 Node.js 中。 一般咱直接是 npm 安装 npm install dayjs 目前应该使用的是Es6 的语法 import dayjs from dayjs 当前时间 直接调用 dayjs() 将返回…

中小企业纵横数智之海,华为云“航母级”平台护航

自古以来&#xff0c;中国人对探索未知世界的想象&#xff0c;便是“纵横四海”。 《尚书》最早记载了中国人的海洋观念&#xff0c;所谓“文命&#xff0c;敷于四海”。屈原在《九歌 云中君》中感叹,“览冀州兮有余&#xff0c;横四海兮焉穷”&#xff0c;希望云神带着他找寻海…

SRE视角下的DevOps:构建稳定高效的软件交付流程

SRE 和 DevOps 有什么区别和联系&#xff1f;本文对此进行了解读&#xff0c;并着重从 SRE 实践出发阐述了 DevOps 的建设思路。 SRE 就是在用软件工程的思维和方法论完成以前由系统管理员团队手动完成的工作。SRE 的职责是运维一个服务&#xff0c;该服务由一些相关的系统组件…

【MyBatis】MyBatis解析全局配置文件源码详解

目录 一、前言 思维导图概括 二、配置文件解析过程分析 2.1 配置文件解析入口 2.2 初始化XMLConfigBuilder 2.3 XMLConfigBuilder#parse()方法&#xff1a;解析全局配置文件 2.3.1 解析properties配置 2.3.2 解析settings配置 2.3.2.1 元信息对象&#xff08;MetaClas…

Unity 自定义Web GL 发布模板

前言 使用讯飞语音识别时&#xff0c;发布Web GL 平台后需要在index.html 中添加相应的script 标签&#xff0c;但每次发布完添加比较麻烦&#xff0c;添加一个发布模板就可以不必每次发布完再手动添加修改。 实现 在Assets 文件夹下新建一个文件夹&#xff0c;重命名为WebG…

pygame raycasting纹理

插值原理 原理 color&#xff08;x&#xff09;(x-x1)/(x2-x1)(color2-color1)color1 x1<x<x2 假如说x伪3 那么color&#xff08;3-x1&#xff09;/(x2-x1)(color2-color1)color 可是图片纹理 这里不需要两种颜色&#xff0c;只需要获得碰撞点坐标后&#xff0c;如果…