MySQL中的VARCHAR和CHAR有什么区别?

我正在尝试存储MD5哈希。


当前回答

CHAR

用于存储固定长度的字符串值。 最大数目。数据类型可以容纳255个字符。 它比VARCHAR快50%。 使用静态内存分配。

VARCHAR

用于存储可变长度的字母数字数据。 此数据类型所能容纳的最大值是 Pre-MySQL 5.0.3: 255个字符。 后mysql 5.0.3:为行共享65,535个字符。 它比CHAR慢。 使用动态内存分配。

其他回答

VARCHAR是可变长度的。

CHAR是固定长度。

如果您的内容是固定大小的,那么使用CHAR将获得更好的性能。

请参阅MySQL页面上关于CHAR和VARCHAR类型的详细解释(一定要阅读注释)。

Char有一个固定的长度(支持2000个字符),它代表字符是一种数据类型

Varchar具有可变长度(支持4000个字符)

如果输入的字符比声明的长度短,Varchar将截断尾随空格,而char则不会。Char将填充空格,并且始终是声明的长度。在效率方面,varchar更熟练,因为它修剪字符,允许更多的调整。但是,如果您知道char的确切长度,则char将以更快的速度执行。

一个CHAR(x)列只能有x个字符。 一个VARCHAR(x)列最多可以有x个字符。

由于你的MD5哈希值总是相同的大小,你可能应该使用CHAR。

然而,你不应该首先使用MD5;它的弱点是众所周知的。 请改用SHA2。 如果要对密码进行哈希,则应该使用bcrypt。

CHAR是固定长度,VARCHAR是可变长度。CHAR总是对每个条目使用相同数量的存储空间,而VARCHAR只使用存储实际文本所需的空间。