【问题标题】:Confusion about varchar datatype关于 varchar 数据类型的困惑
【发布时间】:2010-10-07 08:52:22
【问题描述】:

我的服务器有我的 SQL 版本 5.0.91-community,现在我必须存储大约 500 个字符的长字符串或多或少,我想使用文本数据类型,但后来有人告诉我这会降低性能,我想了解更多关于 varchar 及其限制的信息。

我曾经认为 varchar 仅限于 255 个字符,但后来我在某个地方读到它,它能够存储比新版本更多的内容,即 >= 5.0.3 ,因为我使用的是 5.0.91 做什么你觉得我应该用吗?如果我像 varchar(1000) 一样使用它,它仍然有效吗?

谢谢。

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    文档是here

    • varchar 在 MySQL 5.0.3 及更高版本中的最大大小为 65,535,在 5.0.3 之前限制为 255

    注意有效尺寸较小,

    a的有效最大长度 MySQL 5.0.3 及更高版本中的 VARCHAR 是 受最大行大小限制 (65,535 字节,在 所有列)和字符集 用过。

    您必须指定最大尺寸,例如varchar(1000)。仅仅声明varchar 是不够的。

    【讨论】:

    • 好的,varchar 不是用来动态利用存储的吗?如果是,我可以将其定义为 VARCHAR 还是必须提及我将使用多少个字符?像 VARCHAR(1000)
    【解决方案2】:

    来自The CHAR and VARCHAR Types

    VARCHAR 列中的值是 变长字符串。长度 可以指定为从 0 到 65,535。有效最大长度 一个 VARCHAR 是受最大 行大小(65,535 字节,即 所有列之间共享)和 使用的字符集。

    【讨论】:

    • 我之前确实看到了这一点,但由于没有明确提及而感到困惑。仍然感谢您的努力,我很感激。 :)
    【解决方案3】:

    根据 MySQL 文档:

    TEXT 在以下方面与 VARCHAR 不同:

    • 在存储或检索值时,不会删除 TEXT 列的尾随空格。在 MySQL 5.0.3 之前,这与 VARCHAR 不同,后者在存储值时会删除尾随空格。
    • 对于 TEXT 列上的索引,您必须指定索引前缀长度。对于 CHAR 和 VARCHAR,前缀长度是可选的。
    • TEXT 列不能有 DEFAULT 值。

    除了这些差异之外,使用 VARCHAR 就像使用 TEXT 一样,所以大小问题不是让您在这两者之间做出选择的原因,除非您确实需要存储不超过 1000 个字符。

    【讨论】:

      【解决方案4】:

      在 MySQL 中,VARCHAR 最多接受 65535 个字符。

      【讨论】:

        【解决方案5】:

        您可以很容易地向自己保证。 Mysql 文档是公开访问的,上面写着

        Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions

        至于性能问题,没关系。不是数据类型,而是数据关系会影响性能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-21
          • 2015-02-03
          相关资源
          最近更新 更多