【问题标题】:Which is more efficient for a one or two-character string: CHAR(2) or VARCHAR(2)?对于一个或两个字符的字符串,哪个更有效:CHAR(2) 或 VARCHAR(2)?
【发布时间】:2011-08-04 22:08:27
【问题描述】:

一个非常快速的方法 - 在 MySql 中将可能是一个或两个字符的数据存储为 CHAR(2) 或 VARCHAR(2) 是否更有效?

谢谢!

【问题讨论】:

  • 这两种数据类型不等价。您是否在问哪个更有效地存储恰好 2 个字符的字符串?

标签: mysql database types


【解决方案1】:

就所需的存储空间而言,您最好使用 CHAR(2),因为 VARCHAR(2) 类型将需要一个额外的字节来存储长度:

值 CHAR(2) 需要存储 VARCHAR(2) 需要存储 '' ' ' 2 字节 '' 1 字节 'a' 'a' 2 个字节 'a' 2 个字节 'ab' 'ab' 2 个字节 'ab' 3 个字节

更多详情请见10.4.1. The CHAR and VARCHAR Types

更多信息:What's the difference between VARCHAR and CHAR?

【讨论】:

    【解决方案2】:

    在空间方面,CHAR(2) 更好。看到这个:http://dev.mysql.com/doc/refman/5.0/en/char.html

    如果你有更长的像 CHAR(100) 和 VARCHAR(100),哪个更好的空间使用取决于你拥有的数据。

    在任何情况下,就查询的效率而言,在您负担得起的情况下拥有固定长度的记录总是一个好主意(数据库可以更好地优化固定长度的列)。

    所以 CHAR(2) 在空间和时间方面看起来比 VARCHAR(2) 更胜一筹。

    【讨论】:

      【解决方案3】:

      不过,我会问,varchar 和 char 之间的效率差异值得吗?似乎任何性能提升充其量都可以忽略不计。

      【讨论】:

      • 这更像是一个评论而不是一个答案......至于它是否有所作为,这将取决于用例。长度为 2 时,VARCHAR2 的每个字段的存储开销为 50%。如果有大量相似的字段和行,就会开始快速加起来。
      【解决方案4】:

      在存储方面,VARCHAR(255) 足够智能,可以只存储给定行所需的长度,而 CHAR(255) 总是存储 255 个字符。

      【讨论】:

        猜你喜欢
        • 2020-04-01
        • 2010-11-12
        • 2019-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-25
        • 2011-10-10
        相关资源
        最近更新 更多