mysql数据库字段char和carchar的区别
这个是经常被用到的mysql面试题之一
定义:
char(0~255 bytes) 定长字符串
varchar(0-65535 bytes)变长字符串
区别:
1:char定长字符串类型varchar变长字符串类型,varchar比char节省内存空间。
定长和变长的区别: 如存储字符串‘abcde’。
- char(10)存储,需要存储的字符串字段长度是5字节,实际会占用10字节的磁盘空间,这就是定长,分配多长占用多长。
- varchar(10)存储,实际占用5字节的磁盘空间,最大值是10字节,当存储字符串长度小于10,按照实际长度存储。
这么说来varchar 比char更节省磁盘空间。
2:char比varchar执行速度更快
varchar虽然比char更节省空间,如果一个字符串频繁修改,vahchar类型每次修改的长度都不同,势必造成数据结构频繁分裂和迁移,
频繁的磁盘I/o就大大降低了执行的速度。
为了实现时间的速度,char的定长字符串类型,实现了‘时间换空间’的设计,定长的类型,每次修改长度不变,检索查询迅速定位。
所以char比varhcar执行速度更快。
使用场景:
1:在确定存储字符串长度的时候尽量使用char定长字符串类型。
2:频繁被改动的字符串,不确定长度用varchar。例于:用户名
3:超过255字节长度的只能用varchar。

浙公网安备 33010602011771号