数据库--关于varchar和char的区别

数据库–关于varchar和char的区别

1.定长和变长

char 表示定长,长度固定;最大长度为255字符;

char(20),指的是20个字符,如果存放的字符小于20时,多余空间会自动填充空格

varchar的最大长度为65535即2^16字节,长度可变;varchar的最大长度根据编码格式决定:

MySQL中:

4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
吐槽:4.0版本下不好用啊,用户设置长度,还得先估算一下传输数据的字节长度(除非设置长度特别大)

5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,

最大大小是65532字节

PS:当存储的字符长度大于以上俩种字符类型设置的长度时,皆无法存储;报错:Data too long for column ‘xxx’ at row 1

2.处理速度

因为varchar是变长,根据编码以及存储数据的长度,与最大设置的字符长度进行比较等,才会将数据存入对应的字段中,并且存储了该字段的信息长度,而char仅需比较字符长度,其余部分用空格填补,所以varchar的存储数据的操作速度,没有char迅速

3.char存储信息的优点

3.1存储很短的信息

可以采用char,因为char处理速度更快,并且不会出现较大的内存浪费(补充空格),反而是varchar在此期间的存储信息的长度计算和存储信息的长度,得不偿失;

3.2存储固定长度的信息,例如UUID

可以采用char,因为信息的长度固定,不会出现内存浪费的情况,而char本身的处理速度又比varchar快

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值