Explain执行计划key_len详解
我们在使用Explain查看SQL执行计划时,其中有一列为key_ken
EXPLAIN select * FROM user WHERE id = 1;
key_len表示使用的索引长度,key_len可以衡量索引的好坏,key_len越小 索引效果越好,那么key_len的长度是如何计算的?
常见的列类型长度计算:
CREATE TABLE `user` ( `id` bigint(10) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, `age` int(2) DEFAULT NULL, `sex` char(1) DEFAULT NULL, `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, KEY `idx_name` (`name`), KEY `idx_age` (`age`), KEY `idx_sex` (`sex`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
id字段类型为bigint,长度为8,id为主键,不允许Null ,key_len = 8。
EXPLAIN select * FROM user WHERE id = 1;
name的字段类型是varchar(10),允许Null,字符编码是utf8,一个字符占用3个字节,varchar为动态类型,key长度加2,key_len = 10 * 3 + 2 + 1 = 33 。
EXPLAIN select * FROM user WHERE name = '张三';
age的字段类型是int,长度为4,允许Null ,key_len = 4 + 1 = 5 。
EXPLAIN select * FROM user WHERE age = 19;
sex的字段类型是char(1),允许Null ,字符编码是utf8,一个字符占用3个字节,key_len = 1 * 3 + 1 = 4 。
EXPLAIN select * FROM user WHERE sex = '1';
参考文档:https://blog.csdn.net/zhangchaoyang/article/details/109501696
郭慕荣博客园
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2021-05-15 为什么要“三次握手,四次挥手”
2021-05-15 详解TCP连接的“三次握手”与“四次挥手”(下)