MySQL--执行计划

一、执行计划

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

       

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python ofd转pdf及图片

本文部分内容参考&#xff0c;如有侵权请联系删除&#xff1a;使用 easyofd 解析ofd 文件_python模块easyofd如何使用-CSDN博客 背景需求&#xff1a;需要将邮箱中得ofd格式发票提取出来转换成pdf或者图片。 在网上搜了发现使用pyofd包&#xff0c;安装之后使用各种问题&…

VXLAN小结

1.VXLAN:(组件虚拟网络的架构核心)虚拟扩展本地局域网&#xff0c;通过隧道的形式&#xff0c;将物理上有隔离的资源&#xff0c;在逻辑上连通起来&#xff0c;使其二层互通。 a.物理网络:指的是构成 VXLAN 连接的基础 IP 网络 b.逻辑网络:指的是通过 VXLAN 构建的虚拟网络 C.N…

腾讯Java社招面试题真题,最新面试题

Java中synchronized和ReentrantLock有什么区别&#xff1f; 1、锁的实现方式不同&#xff1a; synchronized是JVM层面的锁&#xff0c;主要依赖于监视器对象&#xff08;monitor&#xff09;实现。ReentrantLock是JDK层面的锁&#xff0c;通过Java代码实现&#xff0c;提供了更…

docker 上面安装 Nginx 以及设置访问 IP 就可以访问前端工程

docker 运行 Nginx 第一步&#xff1a;搜索下镜像 首先可以使用 docker search nginx 搜索 nginx 服务 docker search nginx相关控制台输出&#xff1a; NAME DESCRIPTION STARS OFFICIAL…

[OC]深拷贝与浅拷贝

深拷贝与浅拷贝 深拷贝与浅拷贝 深拷贝与浅拷贝定义按照类型说明非容器类对象的深拷贝与浅拷贝不可变字符串可变类型字符串 容器类对象的深浅拷贝自定义类对象的深浅拷贝容器类对象的完全深拷贝1.copyItems2.解档和归档 定义 深拷贝&#xff1a;简单来说就是创建一个与被复制对…

虚拟化技术[2]之存储虚拟化

存储虚拟化 存储虚拟化简介存储虚拟化一般模型存储虚拟化实现方式基于主机存储虚拟化基于存储设备存储虚拟化基于网络存储虚拟化 案例分析&#xff1a;VMFSVMFS功能 存储虚拟化简介 存储虚拟化&#xff1a;将存储网络中的各个分散且异构的存储设备按照一定的策略映射成一个统一…

webpack5生产模式

生产模式 生产模式准备 开发模式和生产模式有不同的 配置文件 2修改webpack.prod.js文件修改webpack.dev.js文件 修改webpack.dev.js文件 1》修改输出路径为undefined 2》将绝对路径进行修改&#xff0c;进行回退 此时文件的执行命令为 修改webpack.prod.js文件 1》修改绝…

LangChain笔记

很好的LLM知识博客&#xff1a; https://lilianweng.github.io/posts/2023-06-23-agent/ LangChain的prompt hub: https://smith.langchain.com/hub 一. Q&A 1. Q&A os.environ["OPENAI_API_KEY"] “OpenAI的KEY” # 把openai-key放到环境变量里&…

【Linux】Linux的基本指令_2

文章目录 二、基本指令8. man9. nano 和 cat10. cp11. mv12. echo 和 > 和 >> 和 <13. more 和 less14. head 和 tail 和 | 未完待续 二、基本指令 8. man Linux的命令有很多参数&#xff0c;我们不可能全记住&#xff0c;我们可以通过查看联机手册获取帮助。访问…

深入编程逻辑:从分支到循环的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、编程逻辑的基石&#xff1a;分支与循环 分支逻辑详解 代码案例&#xff1a;判断整数是…

Unity 资源 之 限时免费的Lowpoly农场动物,等你来领!

Unity资源 之 Lowpoly farm animals 农村动物 前言资源包内容领取兑换码 前言 Unity 资源商店为大家带来了一份特别的惊喜——限时免费的农场动物资源&#xff01;这是一个充满趣味和实用性的资源包。 资源包内容 在这个资源包中&#xff0c;你可以找到丰富多样的低地养殖动物…

685. 冗余连接 II

685. 冗余连接 II 问题描述 在本问题中&#xff0c;有根树指满足以下条件的 有向 图。该树只有一个根节点&#xff0c;所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点&#xff0c;而根节点没有父节点。 输入一个有向图&#xff0c;该…

mac 安装Node.js

文章目录 前言一、Node是什么&#xff1f;二、下载三、安装四、验证总结 前言 Node.js是一个开源、跨平台的JavaScript运行时环境&#xff0c;它允许开发者在服务器端运行JavaScript代码。Node.js是基于Chrome V8 JavaScript引擎构建的&#xff0c;它的设计目标是提供一种高效…

这样的直男程序员,活该你单身一万年!

#分享下相亲时遇到过哪些奇葩现象# 这样的直男程序员&#xff0c;活该你单身一万年&#xff01; 在丛丛脱单小程序上相亲&#xff0c;遇到一个程序员妹纸&#xff0c;于是有了如下的真实故事&#xff1a; 妹子说她是程序员来着&#xff0c;想着我也是程序员&#xff0c;就想交…

基于xilinx FPGA的 FFT IP使用例程说明文档(可动态配置FFT点数,可计算信号频率与幅度)

目录 1 概述2 IP examples功能3 IP 使用例程3.1 IP设置3.2 fft_demo端口3.3 例程框图3.4 仿真结果3.5 仿真验证得出的结论4 注意事项5例程位置 1 概述 本文用于讲解xilinx IP 的FFT ip examples的功能说明&#xff0c;方便使用者快速上手。 参考文档&#xff1a;《PG109》 2 …

MySQL大表删除方案

1.问题 在生产环境中&#xff0c;执行大表删除操作时&#xff0c;很容易因为占用了大量io资源导致其他事务被阻塞&#xff0c;最终事务不断堆积导致MySQL挂掉。 2.drop命令 drop命令&#xff0c;MySQL主要干了两件事&#xff1a; 清除buffer pool缓冲&#xff08;内存&…

Java控制台实现斗地主的洗牌和发牌功能

一、题目要求 有3个玩家&#xff1a;A&#xff0c;B&#xff0c;C。底牌有三张牌&#xff0c;每个人共17张牌&#xff0c;共&#xff08;17*3354&#xff09;张牌&#xff0c;实现洗牌与发牌&#xff0c;只在控制没有实现UI可视化。 二、思路 1、用List集合存储所有的扑克牌。…

表查询基础【mysql】【表内容 增,删,改,查询】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客MySQL之旅_花果山~程序猿的博客-CSDN博客Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我…

MTK下载AP

只升级选Firemare Upgrade &#xff0c;点下载后&#xff0c;关机下插入USB

多线程案例(线程池)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:<计算坤是如何工作的>&#x1f649; &#x1f439;今日诗词:百年兴衰皆由人, 不由天&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…