key_len计算规则
2016-03-07 16:58
155 查看
1) 索引字段的附加信息,可以分为变长和定长数据类型讨论,当索引字段为定长数据类型,比如说char int datetime,需要有是否为空的标记,这个标记需要占用1个字节对于变长数据类型,比如说:varchar,除了是否为空的标记外,还需要有长度的信息需要占用两个字节(备注:当字段类型定义为非空的时候,是否为空的标记将不占用字节)
2) 同时还需要考虑表所使用的字符集,不同的字符集,gbk编码的为一个字符2个字节,utf3个字节
总结key_len的长度计算公式
varchar(10)变长且允许null:10*(character set:utf8=3,gbk=2,latin1=1)+1(null)+2(变长字段)
varchar(10)变长字段且不允许null:10*(character set:utf8=3,gbk=2,latin1=1)+2(变长字段)
char(10)固定字段且允许null:10*(character set:utf8=3,gbk=2,latin1=1 )+1(null)
char(10)固定长度且不允许为null:10*(character set:utf8=3,gbk=2,latin1=1 )
注:order所使用的索引长度不包含在内
2) 同时还需要考虑表所使用的字符集,不同的字符集,gbk编码的为一个字符2个字节,utf3个字节
总结key_len的长度计算公式
varchar(10)变长且允许null:10*(character set:utf8=3,gbk=2,latin1=1)+1(null)+2(变长字段)
varchar(10)变长字段且不允许null:10*(character set:utf8=3,gbk=2,latin1=1)+2(变长字段)
char(10)固定字段且允许null:10*(character set:utf8=3,gbk=2,latin1=1 )+1(null)
char(10)固定长度且不允许为null:10*(character set:utf8=3,gbk=2,latin1=1 )
注:order所使用的索引长度不包含在内
相关文章推荐
- Hadoop namenode 不能启动解决方案
- API接口设计 - 身份认证篇
- IO流笔记第五发缓冲流读写及简单file类操作
- Objective-C页面消失或出现时,判断是pop还是push操作
- session的生命周期
- SQL语句优化
- 网格细分算法(Catmull-Clark subdivision & Loop subdivision)附源码
- 一些前端开发大牛
- JavaScript之数组
- 常用服务的端口
- BestCoder 74
- POJ 2311 (博弈 sg函数)
- SQL常用语句----提升
- Hibernate三种检索策略的优缺点对比
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- socket新特性之SO_REUSEPORT
- 集合竞价 CCF java实现 (大部分代码是借鉴的别人的,)
- JavaScript正则表达式
- Ext基础一(转载)
- 程序改错