答案 0 :(得分:1)
指定最大长度的一个原因是,即使VARCHAR'最多可以达到255(or more)个字符,也适用于索引。您想告诉数据库有多少个字符正在正在使用,以便索引可以高效并适合存储引擎的功能。索引中的数据量有限制(请参阅MyISAM和InnoDB)
如果你问,“为什么不在任何地方使用TEXT”?嗯,它不是存储效率高,不能在索引中使用,它也可以有不同的检索特性。
答案 1 :(得分:1)
这些信息仅仅过了10年。我无法链接该手册,因为Oracle已从其网站中删除了旧版本,但引用是:
在MySQL 5.0.3之前,VARCHAR列具有长度规范 大于255被转换为可能的最小TEXT类型 保持给定长度的值。例如,VARCHAR(500)是 转换为TEXT,VARCHAR(200000)转换为MEDIUMTEXT。 这是兼容性功能。但是,这种转换受到影响 尾随空间移除。
显然,VARCHAR
在MySQL / 3.23之前不接受大于255的大小。他们发现这将是一种保持向后兼容性的好方法,后来又恢复了决定。
答案 2 :(得分:0)
并不总是你需要VarChar去255.例如,密码的varchar是6位,而不是我将它设置为6所以如果用户试图解析到我的数据库,它将抛出错误。当您期待一条消息或任何您没有限制的内容时,您可以将其设置为255!
@Paul也提到了内存!记忆和检索特征也会有所不同。
是的,文本超过255,会抛出错误!