MySQL数据类型--字符串类型

字符串类型是在数据库中存储字符串的数据类型,字符串类型包括char,varchar,text,enum和set。

char类型和varchar类型

两种最主要的字符串类型,怎么存储在磁盘和内存中,跟存储引擎的具体实现有关

char类型

  • 长度是固定,在创建表时就指定了,其长度可以是0-255的任意值
  • MySQL会剔除所有的末尾空格
  • char值会根据需要采用空格进行填充,以方便比较
  • char适合存储很短的字符串,或者所有值都接近于同一个长度(MD5,因为这是定长的值)
  • 对于经常变更的数据,char 也比varchar更好,因为定长的char不易产生碎片,对非常短的列,char比varchar在存储空间上更有效率比如:使用char(1)来存储y和n的值,char需要一个字节,varchar(1)则需要 2 个      字节,因为还有一个记录长度的额外字节

varchar类型

  • 长度是可变的,在创建表时指定了最大长度,定义时,其最大值可以取0-65525之间的任意值,指定了varchar类型最大值以后,其长度可以在0-到最大长度之间
  • 需要使用1或2个额外字节记录字符串的长度,如果列的最大长度<=255,需要1个字节表示,否则需要2个字节表示 ---VARCHAR(10)列需要11个字节存储空间,VARCHAR(1000)需要1002个字节
  • VARCHAR节省了存储空间,对性能也有帮助,但由于行是变长的,在update时可能是行变得比原来更长,需要做额外的操作(字符串列最大长度比平均长度大很多,列的更新很少,所以碎片不是问题)
  • MySQL在存储和检索时会保留末尾空格

 

varchar(5)  和  varchar(10)存储'hello'的空间开销是一样,但是使用更短的列的优势在于:更长的列会消耗更多的内存,因为MySQL会分配固定大小的内存块来保存内部值,尤其是使用内存临时表进行排序或操作时会特别糟糕,在利用磁盘临时表进行排序时也同样糟糕

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值