MySQL:VARCHAR(1024)与VARCHAR(512)的区别

5
在MySQL中,VARCHAR(1024)VARCHAR(512)有什么区别?如果我的项目永远不会超过512个字符,那么使用VARCHAR(1024)会失去什么呢?

MySQL 中没有 VARCHAR 类型,只有 VARCHAR(N) 类型。对于 MySQL<5.0.3 版本,N<255;而对于后续版本,N<65535 - Alma Do
4个回答

8
您从哪里得到的信息我不清楚,但是在创建varchar表时没有指定长度是不可能的。这会导致语法错误。所以您的问题已经过时。
更新:
Varchar正如其名称所示,是一种可变长度的数据类型,至少在创建表时指定的最大长度范围内。这意味着,在varchar列中,为了存储该行中实际字符串的长度,每行使用一个额外的字节。因此,varchar(1024)和varchar(512)之间的区别在于,当您尝试插入超过1024或512个字节时,您的数据将被截断。请注意:字节,而不是字符。每个字符使用的字节数取决于您使用的字符集。

1
CHAR和VARCHAR指定字段长度以字符为单位,而不是字节。在MySQL中,1个字符可以占用从1(例如latin1)到4(utf8mb4、utf32)个字节,这取决于编码方式。 - Tomas Liubinas

3

实际上,这两者是有区别的。如果您处理大数据量,则可能会对性能产生重大影响。如果使用临时表,则磁盘上的记录将占用指定的完整长度,而不是变长的。在这种情况下,高值将进一步减缓请求速度。临时表可能出现各种原因(例如内存已满,或某些组合的group by / order by等)。


那个差别是什么?它与临时表有什么关系? - Nico Haase

0

根据mySQL文档的说明

与CHAR不同,VARCHAR值作为1字节或2字节长度前缀加数据存储。长度前缀表示值中的字节数。如果值不超过255个字节,则列使用一个长度字节,如果可能需要超过255个字节,则使用两个长度字节。

更深入地分析较大VARCHAR的性能影响可以在这里找到。


0

VARCHAR(1024) 1024 这是长度。

CHAR 和 VARCHAR 类型必须声明一个长度,用于指示您想要存储的最大字符数。例如,CHAR(30) 可以容纳最多 30 个字符。


1
这个问题已经存在几年了,已经有一些答案了。添加一个新答案是可以的,但它应该提供一些新的见解,而不仅仅是重复现有的答案。 - Nico Haase
这个问题的答案是错误的。我没有复制现有的答案。 - Andrey Kotov
如果您认为现有的答案是错误的,请扩展您的答案以包含所有必要的信息。 - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接