mysql中存很长的字符串怎么存_要存很长的字符串是选择varchar还是text

首先是char/varchar/text之间的区别:

char更适合于定长存储的情况,这样不会浪费存储空间,存储的时候尾部有空格会被截断。

varchar适合长度不固定的字符串存储,不会处理尾部空格,而且实际存储占用的空间会加1或2(因为要记录长度 1个字节 =8位 11111111=128+64+32+16+8+4+2+1=255 所以不超过255得就只用1个字节 redis5 String的设计原理同样是这样).

做个测试,测试下char与varchar的区别: 插入char类型的只会去除尾部的空格,前边的空格不会去除; varchar类型的前后空格都不会去除(基于Mysql8)

在mysql中,大于255的varchar字段存储上会自动转换成tinytext, (Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535) mysql的单行最大记录数是65535,不包括text,blob.所以varchar最大可定义为65532(NULL标识位,如果varchar字段定义中带有default null允许列空,则需要需要1bit来标识,每8个bits的标识组成一个字段。一张表中存在N个varchar字段,那么需要(N+7)/8 (取整)bytes存储所有的NULL标识位。如果数据表只有一个varchar字段且该字段DEFAULT NULL,那么该varchar字段的最大长度为65532个字节,即65535-2-1=65532 byte。)使用索引的时候,过长的varchar和text同样会被截断.

所以看具体情况而定,正常情况下varchar能放得下就用varchar.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值