【发布时间】:2011-03-10 20:25:11
【问题描述】:
我知道 CHAR 和 VARCHAR 的区别,
CHAR - 固定长度
VARCHAR - 可变长度(大小 + 1 个字节)
但我想知道选择 varchar 长度的目的是什么,例如VARCHAR(50)、VARCHAR(100)、VARCHAR(255)
这对我来说似乎毫无意义,因为实际使用的空间取决于存储在数据库中的值。
所以我的问题是:
1) 可以将我所有的 varchar 设置为 255 2) 为什么要指定其他长度?
【问题讨论】:
-
一直认为 MySQL 文档很好地解释了差异:dev.mysql.com/doc/refman/5.0/en/char.html
-
请注意,如果您向 varchar 列添加索引:InnoDB 索引键前缀的最大长度为 767 字节。由于 MySQL 处理 Unicode 的方式,这可以进一步减少可以存储的实际“字符”的数量……使用 utf8mb4 编码,可能低至 191。所以对于索引列
varchar(191)可能是“最安全”的最大长度.在此处查看文档:dev.mysql.com/doc/refman/8.0/en/innodb-limits.html