计算mysql explain中key_len流程讲析
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文主要给大家介绍计算mysql explain中key_len流程讲析,文章内容都是笔者用心摘选和编辑的,计算mysql explain中key_len流程讲析具有一定的针对性,对大家的参考意义还是
千家信息网最后更新 2026年10月31日计算mysql explain中key_len流程讲析
本文主要给大家介绍计算mysql explain中key_len流程讲析,文章内容都是笔者用心摘选和编辑的,计算mysql explain中key_len流程讲析具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下主题内容吧。
1.创建测试表及数据
CREATE TABLE `member` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` tinyint(3) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `member` (`id`, `name`, `age`) VALUES (NULL, 'fdipzone', '18'), (NULL, 'jim', '19'), (NULL, 'tom', '19');
2.查看explain
name的字段类型是varchar(20),字符编码是utf8,一个字符占用3个字节,那么key_len应该是 20*3=60。
mysql> explain select * from `member` where name='fdipzone';+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+| 1 | SIMPLE | member | ref | name | name | 63 | const | 1 | Using index condition |+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+
explain的key_len为63,多出了3。
name字段是允许NULL,把name改为NOT NULL再测试
ALTER TABLE `member` CHANGE `name` `name` VARCHAR(20) NOT NULL;mysql> explain select * from `member` where name='fdipzone';+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+| 1 | SIMPLE | member | ref | name | name | 62 | const | 1 | Using index condition |+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+
现在key_len为62,比刚才少了1,但还是多了2。可以确定,字段为NULL会多占用一个字节。
name字段类型为varchar,属于变长字段,把varchar改为char再测试
ALTER TABLE `member` CHANGE `name` `name` CHAR(20) NOT NULL;mysql> explain select * from `member` where name='fdipzone';+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+| 1 | SIMPLE | member | ref | name | name | 60 | const | 1 | Using index condition |+----+-------------+--------+------+---------------+------+---------+-------+------+-----------------------+
改为定长字段后,key_len为60,与预测的一致。
总结:使用变长字段需要额外增加2个字节,使用NULL需要额外增加1个字节,因此对于是索引的字段,最好使用定长和NOT NULL定义,提高性能。
看完以上关于计算mysql explain中key_len流程讲析,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。
字段
字节
流程
测试
内容
字符
笔者
类型
行业
还是
定长
一致
主题
信息
性能
意义
数据
文章
更多
最好
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网加科技
重庆互联网络科技
金融科技 互联网金融
奇酷互联网科技公司
互联网科技媒体
成都互联网科技公司
亿账通互联网科技
互联网科技宣传片
中正互联网科技招聘
互联网科技寓意
燊美集互联网科技有限公司
元气玛特互联网科技公司是外包吗
互联网科技融合创新
世界互联网科技成果奖
万物互联网智能科技
福仕德教育科技互联网
好易买互联网科技
绵阳真晨互联网科技有限公司
网互联网络科技
现代科技的标志之一的互联网
华宇互联网科技
奇酷互联网科技
唐信互联网科技
百单互联网科技有限公司
互联网科技公司名称
佰商互联网科技有限公司
湖南一路畅行互联网科技
互联网科技快讯热点
科技美学互联网 艺术
前海云享互联网科技