欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql之char、varchar、text对比

程序员文章站 2022-05-15 13:25:49
mysql5.0.3以后,n都表示字符数(varchar(n)) 检索效率 char varchar text 当varchar长度超过255之后,跟text一致,但是设置varchar(n)的话,可以防止恶意使用text撑爆数据库 |类型名称|说明|存储需求| | | | | |CHAR ......

mysql5.0.3以后,n都表示字符数(varchar(n))

  • 检索效率 char > varchar > text
  • 当varchar长度超过255之后,跟text一致,但是设置varchar(n)的话,可以防止恶意使用text撑爆数据库
类型名称 说明 存储需求
char < m 固定长度非二进制字符串 m字节,1 <= m <= 255
varchar(m) 变长非二进制字符串 l + 1字节,在此,l <= m和1 <= m <= 255
varchar(m) 变长非二进制字符串 l + 2字节,在此,l <= m和255 < m <= 65535
text 小的非二进制字符串 l + 2字节,在此l < 2^16

char

  • 查询速度:char最快
  • 最大长度:255个字符,utf-8编码的话,占用255 * 3个字节
  • 占用空间:n
  • 其他:
  1. 在获取数据出来之后,一定要记得trim空格,因为不足char(n)的长度,会自动填充空格
  2. 因为定长的char不容易产生碎片,所以char比varchar在空间上也更有效率

varchar

  • 查询速度:varchar次之
  • 最大长度:65535个字节
  • 占用空间:实际空间 + 1,会使用1-3个字节来存储长度,如果整体长度在0-255bytes之间,长度使用1个字节表示,如果长度在255以上,那么就是2个字节,varchar(10)需要11个存储空间,varchar(1001)需要1002个存储空间
  • 其他
  1. 官方手册定义的varchar最大长度65535指的是所有varchar列长的总和

text

  • 查询速度:text最慢
  • 最大长度:跟varchar基本相同,保存65535个字符
  • 占用空间:存储2个字节长度