登录
首页 >  数据库 >  MySQL

mysql explain key_len计算公式

来源:SegmentFault

时间:2023-01-28 19:25:02 432浏览 收藏

本篇文章向大家介绍《mysql explain key_len计算公式》,主要包括MySQL、explain,具有一定的参考价值,需要的朋友可以参考一下。

字段类型 长度 latin1 gbk UTF8 允许为null 不允许为null key_len
char L k=1 k=2 k=3 n=1 n=0 Lk+1n
varchar L k=1 k=2 k=3 n=1 n=0 Lk+1n+2
tinyint 1 n=1 n=0 1+1*n
smallint 2 n=1 n=0 2+1*n
mediumint 3 n=1 n=0 3+1*n
int 4 n=1 n=0 4+1*n
bigint 8 n=1 n=0 8+1*n
datetime(mysql5.5及以前) 8 n=1 n=0 8+1*n
datetime(mysql5.6及以后) 5 n=1 n=0 5+1*n
date 3 n=1 n=0 3+1*n
time 3 n=1 n=0 3+1*n
year 1 n=1 n=0 1+1*n
timestamp 4 n=1 n=0 4+1*n

1.整数类型,浮点数类型,时间类型的索引长度
NOT NULL=字段本身的字段长度
NULL=字段本身的字段长度+1,因为需要有是否为空的标记,这个标记需要占用1个字节
datetime类型在5.6中字段长度是5个字节

2.字符类型
varchr(n)变长字段且允许NULL    =  n * ( utf8=3,gbk=2,latin1=1)+1(NULL)+2
varchr(n)变长字段且不允许NULL  =  n * ( utf8=3,gbk=2,latin1=1)+2

char(n)固定字段且允许NULL      =  n * ( utf8=3,gbk=2,latin1=1)+1(NULL)
char(n)固定字段且允许NULL      =  n * ( utf8=3,gbk=2,latin1=1)

变长字段需要额外的2个字节(VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节),所以VARCAHR索引长度计算时候要加2),固定长度字段不需要额外的字节。而null都需要1个字节的额外空间,所以索引字段最好不要为NULL,因为NULL让统计更加复杂,并且需要额外的存储空间。这个结论在此得到了证实,复合索引有最左前缀的特性,如果复合索引能全部使用上,则是复合索引字段的索引长度之和,这也可以用来判定复合索引是否部分使用,还是全部使用。

今天关于《mysql explain key_len计算公式》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>