mysql的varchar到底能存多少个字符

mysql的varchar到底能存多少个字符

结论

(65535字节-其他列所占用的子节-varchar列长度-null标识占用字节数)/3,向下取整.

注意

  • 4.0版本及以下,MySQL中varchar长度单位是字节,如varchar(20),指的是20字节
  • 5.0版本及以上,MySQL中varchar长度单位是字符。如varchar(20),指的是20字符

测试环境

mysql5.7,存储引擎innodb,utf8字符集

复制代码
GBK编码:
一个英文字符占一个字节,中文2字节,单字符最大可占用2个字节。

UTF-8编码:
一个英文字符占一个字节,中文3字节,单字符最大可占用3个字节。

utf8mb4编码:
一个英文字符占一个字节,中文3字节,单字符最大占4个字节(如emoji表情4字节)。

单列

(65535-3)/3=21844

多列

(65535-其他列占用的总字节数)/3,向下取整

21844-255=21589

因为255也要占用额外的空间存储长度和null标识,实际需要255*3+长度+null标识

相关推荐
lifallen6 分钟前
一篇文章讲透 Flink State
大数据·数据库·python·flink
赵渝强老师11 分钟前
【赵渝强老师】MySQL数据库的分库与分表
数据库·mysql
XDHCOM17 分钟前
利用MSSQL解析优化数据库性能,提升效率,驱动业务创新与稳定发展
数据库·sqlserver
·云扬·35 分钟前
MySQL分区实战指南:从原理到落地的完整攻略
数据库·mysql
雨墨✘38 分钟前
PHP怎么执行Shell命令_exec与shell_exec区别说明【说明】
jvm·数据库·python
Trouvaille ~44 分钟前
【MySQL篇】复合查询:多表数据的整合
数据库·sql·mysql·面试·复合查询·基础入门·多表连接
Project_Observer1 小时前
列表视图中的筛选列
大数据·数据库·深度学习·机器学习·深度优先
bukeyiwanshui1 小时前
20260414 正则表达式及shell三剑客
数据库·mysql·正则表达式
cyber_两只龙宝1 小时前
【Oracle】Oracle之SQL中的单行函数
linux·运维·数据库·sql·云原生·oracle
2201_756847331 小时前
mysql字段长度不够用了怎么办_使用alter table扩大varchar长度
jvm·数据库·python