【问题标题】:Any benefit of uses CHAR over VARCHAR?使用 CHAR 比使用 VARCHAR 有什么好处?
【发布时间】:2011-09-29 17:58:54
【问题描述】:

CHAR 存储为固定长度字符串,VARCHAR 存储为可变长度字符串。我可以使用 VARCHAR 来存储固定长度的字符串,但是为什么人们仍然想使用 CHAR 来存储固定长度的字符串呢?使用 CHAR 而不是 VARCHAR 有什么好处吗?如果没有任何好处,为什么 mySQL 数据库不删除 CHAR 选项?

【问题讨论】:

标签: mysql


【解决方案1】:
  • VARCHAR

varchar 存储变长字符串。与固定长度类型相比,它可能需要更少的存储空间,因为它只使用所需的空间。

varchar 还使用 1 或 2 个额外字节来记录值的长度。例如 varchar(10) 将使用最多 11 个字节的存储空间。 varchar 有助于提高性能,因为它节省了空间。但是,由于行是可变长度的,因此当您更新它们时它们可能会增长,这可能会导致额外的工作。如果一行增长并且不再适合其原始位置,则行为取决于存储引擎...

  • 字符

char 是固定长度的,mysql 总是为指定数量的字符分配足够的空间。存储 CHAR 值时,MySQL 会删除任何尾随空格。根据需要用空格填充值以进行比较。

char 如果你想存储非常短的字符串,或者如果所有的值都差不多 相同的长度。例如,对于用户密码的 MD5 值,CHAR 是一个不错的选择, 它们总是相同的长度。

对于频繁更改的数据,char 也比 VARCHAR 更好,因为固定长度的行不易产生碎片。

【讨论】:

  • 现在我看到了 CHAR 关于频繁更新值的好处。非常感谢。
  • 旁注:我不会说 char 是 MD5 散列或任何散列的好选择。它们应该以二进制格式存储,而不是像十六进制那样的不同编码。
  • 我相信查找速度更快,因为数据库可以立即准确地知道要去哪里,而不必进行长度计算,尽管这些天这可能不太明显
猜你喜欢
  • 2014-01-28
  • 2020-01-01
  • 1970-01-01
  • 2017-07-28
  • 2012-11-29
  • 2012-11-28
  • 2010-09-21
  • 2011-04-28
  • 1970-01-01
相关资源
最近更新 更多