mysql varchar的相关知识

576 阅读1分钟

1. varchar可设置的最大值

21842 = (65535-1-2-4)/3

MySQL要求一个行的定义长度不能超过65535(包括多个字段),所以有65535.

varchar的最大有效长度取决于最大行大小.

  • 减1的原因是实际行的存储从第2个字节开始.
  • 减2的原因是varchar头部的2个字节表示长度.
  • 减4的原因是字段id的int类型占用4个字节.
  • 除以3的原因是一个utf8字符占用3个字节.

2. 为什么经常设置varchar(255)

InnoDB存储引擎的表索引的前缀长度最长是767字节(bytes)

你如果需要建索引,就不能超过 767 bytes;utf8编码时 255*3=765bytes ,恰恰是能建索引情况下的最大值。

如果使用的是utf8mb4编码,默认字符长度则应该是 767除以4向下取整,也就是191。