首页 > 其他分享 >explain解析

explain解析

时间:2024-07-01 23:53:30浏览次数:18  
标签:NULL 字节 explain 查询 索引 Using 解析 select

1 .id
select的查询顺序,如果ID相同则按从上到下。
2.select type
区分查询是简单还是复杂查询
1)simple:简单音询。查询不包含子音询和union
explain select *from film where id = 2:
2)primary:复杂查询中最外层的 select
3)subquery:包含在 select 中的子查询(不在 from 子句中)
4)derived:包含在 from 子句中的子査询。MySQL会将结果存放在一个临时表中,也称为派生表(derived的英文含义)
5)union:在 union 中的第二个和随后的 select
3.table
查询的是哪张表
4.partitions列
基于分区表查询,这个列显示访问的分区
5.type列表
system->const->eq_ref->ref->range->index-all
一般都要range,最好是ref
NULL:执行的时候,不需要通过索引完成查询
const:常数连接,如查询主键或者唯一索引。则查询的rows只有一条不需要全表扫描,效率非常快
system:表数据极少数,不需要IO操作。很少见这种类型查询
eq_ref:主键和唯一索引被连接ON 条件使用,使得查询最多返回一条数据。
ref:使用普通索引或者唯一索引的查询方式,相比全表效率更高
range:使用索引 in < > between 范围查询的行。
index:覆盖索引查询,当SQL通过索引查询获得所需列信息。无需到表中查询。而且查询的时候从二级索引的叶子节点扫描。存在二级索引比较小的情况。
6.possible_keys列
可能使用的查询索引列
7.key列
Mysql使用什么索引列对表的访问。
8.key_len列
索引使用的字节数,通过这个数可以进一步知晓Mysql使用的那些列
字符串,char(n)和varchar(n),5.0.3以后版本中,n均代表字符数,而不是字节数,如果是utf-8,一个数字或字母占1个字节,一个汉字
占3个字节
char(n):如果存汉字长度就是 3n 字节
varchar(n):如果存汉字则长度是 3n + 2 字节,加的2字节用来存储字符串长度,因为varchar是变长字符串
数值类型
tinyint:1字节
smallint:2字节
int:4字节
bigint:8字节  
时间类型 
date:3字节
timestamp:4字节
datetime:8字节
如果字段允许为 NULL,需要1字节记录是否为 NULL
索引最大长度是768字节,当字符串过长时,mysql会做一个类似左前缀索引的处理,将前半部分的字符提取出来做索
引。
假设有一个 VARCHAR(255) 字段,使用 utf8 字符集,允许为 NULL,则 key_len = (3 * 255) + 1(NULL 标志)+ 2(长度信息)= 765 + 1 + 2 = 768 字节。
对于一个 INT(通常为 4 字节)和一个 VARCHAR(100)(假设使用 utf8,允许 NULL),则 key_len = 4(INT长度)+ (3 * 100) + 1(NULL标志)+ 2(长度信息)= 4 + 300 + 1 + 2 = 307 字节。
9.rows
扫描的行数
10.filtered
这个值表示MySQL优化器预测的通过某个表访问方法返回的行数占表中总行数的比例
11.extra列
扩展信息
Using inxex:覆盖索引,不需要回表查询、
Using where:通过wehre查询
Using index condition:基于索引能够排除一定的范围数据
Using temporary:创建临时表处理查询,遇到这种要优化
Using filesort:如果order by不能通过索引实现,则需要文件排序。
https://www.cnblogs.com/guangxiang/p/15647090.html

标签:NULL,字节,explain,查询,索引,Using,解析,select
From: https://www.cnblogs.com/jichenghui/p/18279065

相关文章

  • 解析QAnything启动命令过程
    一.启动命令过程日志启动命令bash./run.sh-clocal-i0-bhf-mQwen-1_8B-Chat-tqwen-7b-chat。输入日志如下所示:root@MM-202203161213:/mnt/l/20230918_RAG方向/QAnything#bash./run.sh-clocal-i0-bhf-mQwen-1_8B-Chat-tqwen-7b-chatFromhttps://github.c......
  • 解析QAnything启动命令过程
    一.启动命令过程日志启动命令bash./run.sh-clocal-i0-bhf-mQwen-1_8B-Chat-tqwen-7b-chat。输入日志如下所示:root@MM-202203161213:/mnt/l/20230918_RAG方向/QAnything#bash./run.sh-clocal-i0-bhf-mQwen-1_8B-Chat-tqwen-7b-chatFromhttps://gi......
  • 【Websocket】解析帧frame.c源码分析
    0.简介本文主要分析https://github.com/mortzdk/websocket中解析帧相关函数1.predict.h#ifndefwss_predict_h#definewss_predict_h#ifdefined(__GNUC__)||defined(__INTEL_COMPILER)/*__builtin_expect是GCC提供的一个内建函数,用于向编译器提示某个条件在大多......
  • 深入解析C++标准库中的std::vector容器
    1.底层实现std::vector 是C++标准库中的一个模版类,用于动态数组。它的底层实现可以理解为一个动态分配的连续内存块,当需要更多空间时,内存会自动扩展。内存分配:vector 使用一块连续的内存存储元素。当插入新元素导致容量不足时,vector 会分配一块更大的内存(通常是当前容量......
  • 工业除尘自动化中的Profibus转Modbus网关应用解析
    一、背景在工业生产过程中,除尘系统扮演着至关重要的角色,它不仅可以保护生产设备,延长设备寿命,还可以减少环境污染,提高生产效率。而Profibus转Modbus网关(XD-MDPB100)作为自动化领域中的关键技术,在除尘自动化控制系统中发挥着重要作用。二、Profibus转Modbus网关优势Profibus转Mod......
  • 蠕动泵技术解析:高效流体控制的关键要素
    一、引言蠕动泵作为一种先进的流体控制设备,在现代工业领域中的应用越来越广泛。其独特的原理和结构赋予了它在处理各种流体介质时的优异性能。本文将详细介绍蠕动泵的工作原理、技术特点及其在工业领域的应用,以帮助企业和专业人士更好地了解和选择适合的流体控制解决方案。二、蠕......
  • 深入解析Linux的使用(上)
    深入解析Linux的使用(上)Linux作为一种开源操作系统,广泛应用于服务器、桌面计算机和嵌入式设备。它以稳定、安全和高效著称。对于新手来说,学习如何使用Linux是一个非常有价值的技能。本文将带你从基础开始,逐步深入了解Linux的使用,包括基本命令、文件系统、权限管理和软件安装......
  • 动态Socks5的发展前景解析(代理ip)
    在当今的网络环境中,网络安全和隐私保护的重要性日益凸显。动态Socks5代理协议,以其独特的优势,在网络安全和隐私保护领域发挥着越来越重要的作用。本文将从多个角度对动态Socks5的发展前景进行深度解析。一、技术特点与优势(10000IP免费用)动态Socks5代理协议,作为Socks协议的最......
  • 小程序视频下载:高效方法全解析
    引言微信小程序作为一项创新技术,极大地丰富了用户的移动应用体验,但同时也存在一些功能限制,例如视频内容的下载限制。软件下载链接及说明书已发布,用户可随时访问以获取所需文件。本软件提供免费体验版本,用户可下载试用,无需支付费用。为了获取软件使用说明书及下载链接,请访问......
  • 网络安全等级保护2.0(等保2.0)全面解析
    一、等保2.0的定义和背景        网络安全等级保护2.0(简称“等保2.0”)是我国网络安全领域的基本制度、基本策略、基本方法。它是在《中华人民共和国网络安全法》指导下,对我国网络安全等级保护制度进行的重大升级。等保2.0的发布与实施,旨在全面强化我国网络安全保障能......