MySQL explain中key_len的计算

MySQL优化篇:执行计划explain中key_len计算方式 概述 key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在使用联合索引的时候,判断该索引有多少部分被使用到非常重要。 准备结构和数据 在MySQL数据库中,新建表,表名为key_len_demo CREATE TABLE `key_len_demo` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` C... 阅读详情

key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。
在计算key_len时,下面是一些需要考虑的点:

  • 索引字段的附加信息:可以分为变长和定长数据类型讨论,当索引字段为定长数据类型时,如char,int,datetime,需要有是否为空的标记,这个标记占用1个字节(对于not null的字段来说,则不需要这1字节);对于变长数据类型,比如varchar,除了是否为空的标记外,还需要有长度信息,需要占用两个字节。

  • 对于,char、varchar、blob、text等字符集来说,key len的长度还和字符集有关,latin1一个字符占用1个字节,gbk一个字符占用2个字节,utf8一个字符占用3个字节。

综上,下面来看一些例子:

列类型KEY_LEN备注
id intkey_len = 4+1int为4bytes,允许为NULL,加1byte
id bigint not nullkey_len=8bigint为8bytes
user char(30) utf8key_len=30*3+1utf8每个字符为3bytes,允许为NULL,加1byte
user varchar(30) not null utf8key_len=30*3+2utf8每个字符为3bytes,变长数据类型,加2bytes
user varchar(30) utf8key_len=30*3+2+1utf8每个字符为3bytes,允许为NULL,加1byte,变长数据类型,加2bytes
detail text(10) utf8key_len=30*3+2+1TEXT截取部分,被视为动态列类型。

备注:key_len只指示了where中用于条件过滤时被选中的索引列,是不包含order by/group by这一部分被选中的索引列的。
例如,有个联合索引idx(c1,c2,c3),3列均是int not null,那么下面的SQL执行计划中,key_len的值是8而不是12:

select ... from tb where c1=? and c2=? order by c1;

参考文章:
mysql explain 中key_len的计算
解读EXPLAIN执行计划中的key_len

毕设-MobileNetV4:给YOLOv8装上轻量化“引擎”——通用瓶颈与C2f融合的实战教程 本文介绍了一种将MobileNetV4与YOLOv8结合的目标检测模型轻量化方案。MobileNetV4通过通用瓶颈(UB)结构实现多任务适配,其核心改进包括动态卷积核、注意力机制和多路径特征聚合,显著提升特征提取能力。作者详细阐述了如何在YOLOv8框架中实现MobileNetV4的通用瓶颈模块,包括"膨胀-卷积-注意力-压缩"的流程设计,并构建完整的backbone网络。该方案通过融合MobileNetV4的轻量化优势与YOLOv8的高效检测架构,在移动设备上实现了精度与速度的良好平 阅读详情

相关推荐

用LTspice仿真CMOS反相器功耗?这份避坑指南能省你3天调试时间

本文详细介绍了如何使用LTspice准确仿真CMOS反相器的功耗,包括动态功耗、短路功耗和静态功耗的测量技巧。通过工程实践指南,帮助电子工程师避开常见陷阱,优化仿真参数设置,提升仿真结果的可靠性,节省调试时间。

w7x8y9z的博客 188

Mysql 索引 key_len 计算方式最强解析

1.创建测试表 CREATE TABLE `test_index_len` ( `id` int(11) DEFAULT NULL, `num` int(11) NOT NULL, `num_1` int DEFAULT NULL, `name_1` char(10) DEFAULT NULL, `name_2` char(10) NOT NULL, `name_3` va...

渔夫数据库笔记 2684

华为昇腾服务器npu中安装paddle,pytorch等环境,训练代码迁移适配等问题记录

参考文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/README_cn.md

qq_29220369的博客 4112

Mysql的key_len计算方法

key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。值越大越好。 创建索引,并查询表结构 create index idx_age on emp(age); 如何计算 key_len=age的字节长度+deptid的字节长度+name的字节长度=(4+1) + (4+1) +(20*3+2+1)=73 key_len的长度计算公式: varchr(10)变长字段且允许NULL = 10 * ( char.

Knight 2595

(Cascade extended state observer)级联ADRC的simulink仿真和程序---送给中国研究学者的精华版

(Cascade extended state observer)级联ADRC的simulink仿真和程序---送给中国研究学者的精华版

weixin_44312889的博客 3778

浮点数精度陷阱全解析:从IEEE 754到深度学习部署选型

在计算机数值计算中,浮点数是表示带小数数字的标准方式,但它的存储规则决定了精度和边界天生存在限制。许多开发者都曾遭遇过0.1+0.2不等于0.3的尴尬,或是模型训练中loss变成NaN的困扰,这些问题的根源往往指向IEEE 754标准中的规格化、非规格化表示及舍入规则。理解浮点数的底层原理,不仅能避开直接的比较判断陷阱,还能指导我们在不同场景下做出合理的技术选型。从C语言的printf到Python的repr,从嵌入式串口打印到深度学习中的FP32、FP16、BF16、TF32格式,浮点数知识贯穿底层开发和

weixin_34314962的博客 463

MYSQL的explain执行计划中key_len计算方式

mysql索引分析,explain执行计划中key_len计算以及分析

weixin_44991038的博客 1905

【全网最新】使用 1panel面板 部署若依系统( springboot 和 vue)项目

打开前端项目的vue.config.js文件,检查devServer下的proxy代理部分,然后将下面这个端口修改为你要在打包后访问的端口,即使用nginx代理前的接口。这个端口默认是80端口,这里把其修改为不会冲突的8010端口,后台接口的地址配置为9080,不过感觉这里设置的8010和9080可能没有用,因为部署前端静态页面是,也配置了一次网页的外部接口和api的接口,后期有空了再验证。打开右侧的Maven,点击:生存期->package,然后点击运行,等待打包成功,包在如图所示的文件夹中。

老薛的专栏 1755

【数据库原理】如何计算mysql索引key_len

  测试开始: 一、我们首先继续按上篇博客的数据来进行测试   有上面的效果对比我们可以看得出来,当索引字段没有设置notnull为true时,需要增加一个字节来判断字段是否为空,而且,int类型字段索引占4个字节长。 二、当我把strvalue字段更改为varchar(255)类型,不可为null时: 更改为varchar(100): 总结:varchar(n)类...

pf1234321的专栏 969

多智能体强化学习算法【三】【QMIX、MADDPG、MAPPO】

相关文章: 1.QMIX算法简述 QMIX是一个多智能体强化学习算法,具有如下特点: 1. 学习得到分布式策略。 2. 本质是一个值函数逼近算法。 3. 由于对一个联合动作-状态只有一个总奖励值,而不是每个智能体得到一个自己的奖励值,因此只能用于合作环境,而不能用于竞争对抗环境。 4. QMIX算法采用集中式学习,分布式执行应用的框架。通过集中式的信息学习,得到每个智能体的分布式策略。 5. 训练时借用全局状态信息来提高算法效果。是后文提到的VDN方法的改进。 6. 接上一条,QMIX设计一个神经网络来

丨汀、的博客 5471

国科大学习资料--人工智能原理与算法-第六次作业解析(学长整理)

国科大学习资料–人工智能原理与算法-第六次作业解析(张文生老师主讲)(6.6、6.7、6.11) 6.6 说明如何通过使用辅助变量把诸如A+B=C这样的三元约束转变成三个二元约束。假设值域是有限的。(提示:考虑引进新变量表示变量对的值,引进约束如“X是Y变量对中的第一个元素”。)然后说明如何把多于三个变量的约束类似地转换为二元约束。说明如何通过改变变量的值域来消除一元约束。这就完整演示了任何CSP都可以转变为只含二元约束的CSP。 答:首先,我们引入一个新变量AB,假设A和B的范围均为N,AB的范围为N×N

无名何许人的博客 2870

MySQL索引长度(key_len)计算

计算规则 1.索引字段,没有设置not null,则需要加一个字节。 2.定长字段:int固定占四个字节、date占三个字节、char(n)占n个字符, 3.varchar(n)占n个字符+2个字节。 4.不同的字符集,一个字符占用的字节数不同 latin1编码,每个字符占用一个字节 gbk编码,每个字符占用两个字节 utf8编码,每个字符占用三个字节 utf8mb4编码,每个字符占用四个字节 例子 可以通过explain ...

程序员Forlan的博客 2980

机器人视觉联动精度优化:从±2mm到±0.02mm,产线级手眼标定全实战

2025年我接东莞长安Type-C接口分拣项目的时候,就是栽在了手眼标定上:实验室里标定完精度±0.5mm,一到产线直接掉到±2mm,机器人10次有3次抓不住,2000多件Type-C接口直接报废,还撞坏了2套汇川SCARA机器人的吸盘,本来45天的工期拖了3个月,不仅没赚到钱,还倒贴了几万块。手眼标定从来不是简单的跑个demo、算个矩阵就完事了,它是一个系统工程:从硬件选型、安装固定、相机标定、标定流程、算法优化、环境控制、重复验证,每一个环节都会影响最终的联动精度。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 384

mysql key_len_浅谈mysql explain中key_len的计算方法

mysql的explain命令可以分析sql的性能,其中有一项是key_len(索引的长度)的统计。本文将分析mysql explain中key_len的计算方法。1、创建测试表及数据CREATE TABLE `member` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`age` t...

weixin_34094282的博客 523

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

学习mysql的explain中key_len的作用及计算规则

学习mysql的explain中key_len的作用及计算规则explain中key_len的作用key_len的长度是如何计算的?key_len的长度计算公式 explain中key_len的作用 key_len越小 索引效果越好 key_len的长度是如何计算的? name的字段类型是varchar(20),字符编码是utf8,一个字符占用3个字节,那么key_len应该是 20*3=60。 字段类型 key_len 备注 int 4+1=5 允许为null,加1-bite id n

徊忆羽菲 6678

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql explain中key_len的计算方法

mysql的explain命令可以分析sql的性能,其中有一项是key_len(索引的长度)的统计。本文将分析mysql explain中key_len的计算方法。

傲雪星枫 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[mysql]explain语句中的key_len计算

[mysql]explain语句中的key_len计算 点击打开链接

mail181391907的博客 490

【MySql】解读EXPLAIN执行计划中的key_len 字段大小的计算规则

解读EXPLAIN执行计划中的key_len导读EXPLAIN中的key_len一列表示什么意思,该如何解读?EXPLAIN执行计划中有一列 key_len 用于表示本次查询中,所选择的索引长度有多少字节,通常我们可借此判断联合索引有多少列被选择了。在这里 key_len 大小的计算规则是: a、一般地,key_len 等于索引列类型字节长度,例如int类型为4-bytes,bigint为8-b

逆水行舟 3136

mysql explain key_len_MySQL EXPLAIN 中key_len的计算

一、MySQL数据类型1.1 整数类型1、TINYINT 1字节2、SMALLINT 2字节3、MEDIUMINT 3字节4、INT 4字节5、BIGINT 8字节当选择UNSIGNED属性时,表示不允许负值,可以使正数的上限提高一倍。1.2 实数类型DECIMAL 9字节。小数点左边4字节,小数点1字节,小数点右边4字节1.3 字符串类型char(10) 定长,...

weixin_35828357的博客 219

mysql explain key为空_关于mysql explain中key_len的计算方法讲解

mysql的explain命令可以分析sql的性能,其中有一项是key_len(索引的长度)的统计。本文将分析mysql explain中key_len的计算方法。1.创建测试表及数据CREATE TABLE `member` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age...

weixin_39732491的博客 472

mysql index key len_explain 中key_len的作用及计算规则

explain 中key_len的作用key_len越小索引效果越好key_len的长度是如何计算的?name的字段类型是varchar(20),字符编码是utf8,一个字符占用3个字节,那么key_len应该是20*3=60。key_len的长度计算公式:varchr(10)变长字段且允许NULL = 10 * ( character set:utf8=3,gbk=2,latin1=...

weixin_35282313的博客 389

MySQL Explain中key_len的计算

通常在优化SQL查询的时候,我们都会使用explain分析SQL执行计划,通常来说当用到组合索引的时候我们如何判断索引完全用上呢?当然高手看看表结构及SQL语句就知道到底用到了几个字段,对于不熟悉的同学呢?我们还是可以看看key_len的长度,当然这个计算还是有点复杂的,下面我们来谈谈explain key_len如何计算的。 a.表结构如下: CRE...

weixin_33785972的博客 136

mysql explain 中key_len的计算

今天丁原问我mysql执行计划中的key_len是怎么计算得到的,当时还没有注意,在高性能的那本书讲到过这个值的计算,但是自己看执行计划的时候一直都没有太在意这个值,更不用说深讨这个值的计算了: ken_len表示索引使用的字节数,根据这个值,就可以判断索引使用情况,特别是在组合索引的时候,判断所有的索引字段都被查询用到。 在查看官方文档的时候,也没有发现详细的key_len的计算介绍,后来做...

weixin_30399871的博客 121

mysql explain key_len_mysql explain 中key_len的计算

今天丁原问我mysql执行计划中的key_len是怎么计算得到的,当时还没有注意,在高性能的那本书讲到过这个值的计算,但是自己看执行计划的时候一直都没有太在意这个值,更不用说深讨这个值的计算了:ken_len表示索引使用的字节数,根据这个值,就可以判断索引使用情况,特别是在组合索引的时候,判断所有的索引字段都被查询用到。在查看官方文档的时候,也没有发现详细的key_len的计算介绍,后来做了一些测...

weixin_32153867的博客 176

mysql explain key_len_mysql explain中key_len的计算

ken_len表示索引使用的字节数,根据这个值,就可以判断索引使用情况,特别是在组合索引的时候,判断是否所有的索引字段都被查询用到。key_len显示了条件检索子句需要的索引长度,但 ORDER BY、GROUP BY 子句用到的索引则不计入 key_len 统计值;关于 key_len 的计算规则:• 当索引字段为定长数据类型,比如:char,int,datetime,需要有是否为空的标记,这个...

weixin_34449886的博客 315
上一篇: Linux学习之CentOS(一)----在VMware虚拟机中安装CentOS 7
下一篇: Redis学习
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值