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。

 

  

 

    

 

posted @ 2020-07-07 14:33  娓娓到来  阅读(363)  评论(0)    收藏  举报