CHAR被存储为固定长度字符串,VARCHAR被存储为可变长度字符串。我可以使用VARCHAR来存储固定长度的字符串,但为什么人们仍然想使用CHAR来存储固定长度的字符串呢? 使用CHAR而不是VARCHAR是否有任何好处?如果没有好处,为什么MySQL数据库不删除CHAR选项?
CHAR被存储为固定长度字符串,VARCHAR被存储为可变长度字符串。我可以使用VARCHAR来存储固定长度的字符串,但为什么人们仍然想使用CHAR来存储固定长度的字符串呢? 使用CHAR而不是VARCHAR是否有任何好处?如果没有好处,为什么MySQL数据库不删除CHAR选项?
VARCHAR 存储可变长度的字符字符串。它可以比定长类型需要更少的存储空间,因为它只使用所需的空间。
VARCHAR 还使用 1 或 2 个额外的字节来记录值的长度。例如 varchar(10) 将使用最多 11 字节的存储空间。VARCHAR 提高了性能,因为它节省了空间。但是,由于行是可变长度的,当您更新它们时,它们可能会增长,这可能导致额外的工作。如果一行增长并且不再适合其原始位置,则行为取决于存储引擎。
CHAR 是定长的,mysql 总是为指定数量的字符分配足够的空间。在存储 CHAR 值时,MySQL 移除任何尾随空格。需要填充值以进行比较。
如果要存储非常短的字符串,或者所有值的长度几乎相同,则 CHAR 很有用。
例如,CHAR 对于用户密码的 MD5 值是一个很好的选择,这些值始终具有相同的长度。
对于经常更改的数据,CHAR 比 VARCHAR 更好,因为定长行不容易产生碎片。
CHAR
的任何优势。 - undefined