mysql之char、varchar、text对比

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个字节长度
相关文章
相关标签/搜索