关于MySQL中的char与varchar的区别
在MySQL中,varchar
和char
都是可以存储字符串的类型,并且,在设计数据表时,必须明确的指定长度!
varchar
是变长的,假设某字段设计为varchar(10)
,当存入的是"java"
字符串时,实际存入4个字符,则实际占用也是4个字符的空间大小;
char
是定长的,假设某字段设计为char(10)
,当存入的是"java"
字符串时,将要存入的4个字符比设计的varchar(10)
中指定的数量要少,则会补充6个空格,以达到10个字符,则实际占用也是10个字符的空间大小;
所以,如果要存入的字符串的长度不固定,应该使用varchar
类型,只有长度固定的情况下才使用char
。
在MySQL处理varchar
类型时,默认情况下,还会使用额外的1个字节记录“实际存入的字符数量”,也就是说,将"java"
存入到varchar(10)
的字段中,MySQL还会使用额外的1个字节空间记下4
这个数量值,后续,当读取这个值时,MySQL会先读取这个4
,然后再开始获取字段中的数据;而char
类型就不存在这个问题,因为使用char
类型存储的字符串的长度一定是固定的(即使不固定,也会添加空格,使得该字段的所有字符串的长度都与字段的设计值保持一致)。
当然,在处理varchar
类型时,由于默认情况下只使用1个字节记录“实际存入的字符数量”,所以,在这种情况下能够存入的字符数量最多是255个(1个字节能表示的最大正数),当需要存入更多数据时,MySQL会自动扩容,使用2个字节记录“实际存入的字符数量”,能够表示的最大正数就是65535,并且,不会再扩容,所以,使用varchar
最多存储65535个字符!
所以,综合来看,其实varchar
类型的数据将占用更多的存储空间(需要使用额外的字节作记录),同时,查询效率偏低,所以,虽然使用char
能够存储的数据换成使用varchar
也都能正常存储和使用,但是,在能够使用char
的应用场景,应该优先使用char
。
文章来源: haiyong.blog.csdn.net,作者:海拥✘,版权归原作者所有,如需转载,请联系作者。
原文链接:haiyong.blog.csdn.net/article/details/107110320
- 点赞
- 收藏
- 关注作者
评论(0)