Pawan Tiwari Asked: 2019-07-02 04:41:30 +0800 CST2019-07-02 04:41:30 +0800 CST 2019-07-02 04:41:30 +0800 CST Varchar 存储和性能 772 我有一个简单的查询,之前可能已经回答过,但我没有找到相同的确切答案。 我的问题是: 我通过实体使用 JPA 创建了一个表。现在我将字符串字段显示为varchar(255). 现在我想知道当我在那个大小的字段中保存一些数据时会发生什么,比如说 10?它会将数据保存在 10 个字节中还是使用 255 个字节? 任何澄清将不胜感激。 mysql varchar 2 个回答 Voted Best Answer James Randell 2019-07-02T04:54:44+08:002019-07-02T04:54:44+08:00 我认为在 MySql 中最多 255 个带有 varchar 的字符,它是您存储的字符数加上 1 的长度。因此,如果您输入一个长度为 10 个字符的值,那么磁盘上将有 11 个字节。 更新 找到了一个文档链接来备份它。第一个表演示了 char 和 varchar 之间的区别:https ://dev.mysql.com/doc/refman/8.0/en/char.html Rick James 2019-07-02T06:51:08+08:002019-07-02T06:51:08+08:00 不要因为这个问题失眠,但是... VARCHAR(255) CHARACTER SET utf8mb4需要一个 2 字节长度的字段,因为它最多可以有 1020 个字节。 某些临时表操作会在复杂语句中扩展VARCHAR,CHAR从而SELECT占用更多空间,尽管是暂时的。 好的做法是使用合理的最大长度,但对于您最终可能放入的任何内容都足够大。
我认为在 MySql 中最多 255 个带有 varchar 的字符,它是您存储的字符数加上 1 的长度。因此,如果您输入一个长度为 10 个字符的值,那么磁盘上将有 11 个字节。
更新 找到了一个文档链接来备份它。第一个表演示了 char 和 varchar 之间的区别:https ://dev.mysql.com/doc/refman/8.0/en/char.html
不要因为这个问题失眠,但是...
VARCHAR(255) CHARACTER SET utf8mb4
需要一个 2 字节长度的字段,因为它最多可以有 1020 个字节。某些临时表操作会在复杂语句中扩展
VARCHAR
,CHAR
从而SELECT
占用更多空间,尽管是暂时的。好的做法是使用合理的最大长度,但对于您最终可能放入的任何内容都足够大。