MySQL——char与varchar的区别

作者:小 琛
欢迎转载,请标明出处

区别一:定长与不定长

char表示定长,长度固定,varchar表示变长,即长度可变。当char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储,插入多长就存多长。

因为其长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率。varchar则刚好相反,以时间换空间。

区别二:可存储的容量不同

对 char 来说,最多能存放的字符个数 255,和编码无关。
而 varchar ,最多能存放 65532 个字符。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节。

因此,varchar的可操作空间更大。

使用经验

  1. 该字段数据集的平均长度与最大长度是否相差很小,若相差很小优先考虑CHAR类型,反之,考虑VARCHAR类型。例如该变量是用来存储用户的昵称的,不同用户使用的昵称区别很大,所以采用varchar更合理。
  2. 若字段经常需要更新,则优先考虑CHAR类型,由于CHAR类型为定长,因此不容易产生碎片。
  3. 对于字段值存储很小的信息,如性别等,优先选取CHAR类型,因为VARCHAR类型会占用额外的字节保存字符串长度信息。
  4. 当我们能够选取CHAR类型的时候,或者说空间消耗相对并不是影响因素的重点时,尽量选取CHAR类型,因为在其他方面,CHAR类型都有着或多或少的优势。而当空间消耗成为了很大的影响因素以后,我们则考虑使用VARCHAR类型。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值