MySQL explain中key_len的计算key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。在计算key_len时,下面是一些需要考虑的点:索引字段的附加信息:1.可以分为变长和定长数据类型讨论;2.当索引字段为定长数据类型时,如char,int,datetime,需要有是否为空的标记,这个标记占用一个字节(对于not null来说不需要这一个字节);3.当索引字段为变长数据类型时,如varchar,除了是否为空的标记外,还需要有长度信息,需要占用两个字节;4.对于char,varchar,blob,text等,key_len的长度还和字符集有关,latin1 一个字符占用一个字节,gbk 一个字符占用两个字节,utf8 一个字符占用三个字节例如:列类型 KEY_LEN 备注id int key_len = 4+1 int为4bytes,允许为NULL,加1byteid bigint not null key_len=8 bigint为8bytesuser char(30) utf8 key_len=30*3+1 utf8每个字符为3bytes,允许为NULL,加1byteuser varchar(30) not null utf8 key_len=30*3+2 utf8每个字符为3bytes,变长数据类型,加2bytesuser varchar(30) utf8 key_len=30*3+2+1 utf8每个字符为3bytes,允许为NULL,加1byte,变长数据类型,加2bytesdetail text(10) utf8 key_len=30*3+2+1 TEXT截取部分,被视为动态列类型备注:key_len只表示了where中用于条件过滤时被选中的索引列,是不包含order by / group by 这一部分被选中的索引列的。例如:有一个联合索引idx(a1,b2,c3),三列均是 int not null,那么下面的执行计划中key_len的值是8,不是12select .... from table where c1=? and c2=? order by c1;
MySQL explain 中 key_len的详解
来源:这里教程网
时间:2026-03-01 15:06:42
作者:
编辑推荐:
- MySQL explain 中 key_len的详解03-01
- python基础(OA信用盘平台出租)完整的总结03-01
- MySQL5.7从入门到精通(刘增杰 著)带书签完整版PDF[230MB]下载03-01
- 深入理解MySQL索引03-01
- 深入理解 MySQL 索引底层原理03-01
- MySQL GTID复制中断修复过程03-01
- MySQL 递归查询总结03-01
- mysql yum源安装03-01
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- python基础(OA信用盘平台出租)完整的总结
python基础(OA信用盘平台出租)完整的总结
26-03-01 - MySQL5.7从入门到精通(刘增杰 著)带书签完整版PDF[230MB]下载
- 深入理解MySQL索引
深入理解MySQL索引
26-03-01 - 深入理解 MySQL 索引底层原理
深入理解 MySQL 索引底层原理
26-03-01 - MySQL 递归查询总结
MySQL 递归查询总结
26-03-01 - MySQL double write存在意义
MySQL double write存在意义
26-03-01 - mysql 学习笔记之搭建MHA高可用
mysql 学习笔记之搭建MHA高可用
26-03-01 - MySQL truncate原理
MySQL truncate原理
26-03-01 - mysql学习笔记之监控与优化
mysql学习笔记之监控与优化
26-03-01 - 项目管理软件这么多,为什么我只推荐它?
项目管理软件这么多,为什么我只推荐它?
26-03-01
