【MySQL 字符串数据类型优化】char 和 varchar 的区别
前言
学习过 MySQL 数据库的友友们肯定对
char和varchar
这两个字符串数据类型并不陌生,那么这两个类型的区别、细节和使用场景
你清楚吗?
char 与 varchar 对比
char(size),
固定长度
字符串,最大 255 字符。varchar(size),
可变长度
字符串,最大==65535 字节==(注意这里是字节,在不同的编码规则中字符占用的字节是不相同的),若没定义表的编码则默认为utf8
【utf8 编码最大 21844 字符;gdk 编码最大为 32766 字符】(注意字符而非字节)
char 分配固定字符,char(4)占用四个字符,存入一个字符,也会在内存中占用四个字符空间。
varchar
按实际使用分配空间
,还需使用 1-3 个字节来记录存放内容长度,总占用 = L(实际数据大小)+(1-3)个字节
.
代码样例
复制代码
char 与 varchar 的使用细节
char(4),这个 4 表示字符数,非字节数,无论中文还是字母都是四个(占用字符空间固定)。
varchar(4),这个 4 也表示字符数,但是这里存放的字母或者中文是
按照定义表时的编码来计算
(占用字符空间不固定)。
char 和 varchar 的使用情景
数据定长,推荐char
。例如 md5 密码(固定 32 为)、邮编、手机号、身份证号等。2.长度不确定,使用varchar
。例如留言、文章等。
版权声明: 本文为 InfoQ 作者【写代码两年半】的原创文章。
原文链接:【http://xie.infoq.cn/article/c43f663748b77ba00db5cf47e】。文章转载请联系作者。
评论