计算mysql explain中key_len流程讲析
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文主要给大家介绍计算mysql explain中key_len流程讲析,文章内容都是笔者用心摘选和编辑的,计算mysql explain中key_len流程讲析具有一定的针对性,对大家的参考意义还是
千家信息网最后更新 2025年11月07日计算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安全错误
数据库的锁怎样保障安全
网络安全高速公路机电
软件开发组
泸州成都软件开发app
无线网络安全详细分析
公共数据库项目推进会
2k20服务器保留多久
沙田定制软件开发
宿州服务器机柜加工价格
超凡先锋不同服务器能联机吗
建行外包网络安全工程师收入
近几年网络安全原理论文
太原小店网警网络安全
航天信息有网络安全概念
上海视频安防软件开发价格
网络技术服务口号
苹果第三方查询数据库
四川实用erp软件开发
方舟生存进化怎么连接焦土服务器
崇明区工业软件开发费用
服务器系统安全加固软件
中学生网络安全分析
莆田万兴网络技术
外汇分析软件开发
天津调度服务器批发虚拟主机
宽带网络技术革新
网络安全法在什么起施行
重庆市格致软件开发公司电话
服务器组策略管理命令
访问网站是数据库吗
百度文库属于文献数据库吗