显着增加 varchar 字段的长度是否会影响性能?

Jon*_*noB 5 mysql

目前,我们有一个 varchar(255) 字段。我们的一位用户请求将该字段增加约 10 倍,达到 varchar(2048) 左右。考虑到他的用例,这似乎是一个合理的请求。

相关字段未编入索引,它不是任何联接的一部分,也不会包含在任何 where 子句中。

我意识到较小的增加(例如从 50 到 100)没有影响,但是这在尺寸增加得多的情况下仍然成立吗?

Fra*_*cia 2

显然没有旁注

“在存储方面,VARCHAR(255) 足够智能,可以仅存储给定行所需的长度,这与始终存储 255 个字符的 CHAR(255) 不同。

但既然你用 MySQL 标记了这个问题,我将提到一个特定于 MySQL 的提示:当你的查询隐式生成临时表时,例如在排序或 GROUP BY 时,VARCHAR 字段将转换为 CHAR 以获得使用固定的优势-宽度行。如果您对不需要那么长的数据使用大量 VARCHAR(255) 字段,则这可能会使临时表变得非常大。

最好根据您要存储的数据类型来定义列。当然,很难知道最长的邮政地址是多少,这就是为什么许多人选择比任何地址都长的长 VARCHAR。255 是惯例,因为它可能是早期某些数据库中 VARCHAR 的最大长度(直到最近的 PostgreSQL 也是如此)。”

比尔·卡尔文

所以这基本上取决于该领域的特定用户;如果您不使用GROUP BY该字段,那么就没有问题。