【问题标题】:Varchar or Text Data Types for strings length up to few thousands of chars字符串的 Varchar 或 Text 数据类型,长度可达几千个字符
【发布时间】:2017-03-11 11:44:08
【问题描述】:

我有一个小型社交网站,里面有帖子和 cmets。
我决定让用户使用他们想要的任意数量的字符创建帖子,我认为存储此类内容的最佳数据类型是 Text
但是对于 cmets,大多数情况下用户只写一行或几行文本。这就是为什么我认为我必须将评论字符串长度限制为最大 3000 甚至 6000 个字符。
那么,我的 cmets 应该使用什么数据类型?
Varchar 还是 Text

【问题讨论】:

    标签: mysql sqldatatypes


    【解决方案1】:

    VARCHARTEXT 在很多地方都有区别。我说的一些话:

    • 如果最大长度超过 512 个字符,请使用TEXT
    • 永远不要使用TINYTEXT——它只有与VARCHAR(255)相关的否定词。
    • 不要使用VARCHAR(255);选择一个合理的最大值而不是 255。(这是与复杂查询中的临时表相关的小优化。)
    • 仅对真正固定长度的内容使用CHAR。在几乎所有这种情况下,都使用CHARACTER SET ascii(或latin1)。 (否则它会占用比您预期更多的空间。
    • 使用CHARACTER SET ut8mb4。 (例外情况越来越少。)

    (对不起,我跑题了。回到主题……)

    I 索引,在 InnoDB 行的布局中(有 4 个不同的ROW_FORMATs)等,VARCHAR(513)TEXT 基本上没有区别。

    VARCHAR 的少数参数之一是它将存储限制为给定的长度。但这有多重要?

    【讨论】:

      【解决方案2】:

      VARCHAR 列中的值是可变长度字符串。长度可以指定为 0 到 65,535 之间的值,这似乎足以处理用户的预期评论长度。

      四种 TEXT 类型是 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。每种数据类型可以存储的最大数据量约为:

      TINYTEXT 256 字节

      文本 65,535 字节 ~64kb

      MEDIUMTEXT 16,777,215 字节 ~16MB

      LONGTEXT 4,294,967,295 字节 ~4GB

      另见When to use TEXT in mysql instead of VARCHAR

      【讨论】:

      • Thnx,在链接源作者中写道:“VARCHAR 与表内联存储。当大小合理时,VARCHAR 更快。”,那么 varchar(3000) 是否被认为是合理的大小?跨度>
      【解决方案3】:

      根据您的要求使用四种可用的文本类型 [TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT] 之一。 http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html

      【讨论】:

        猜你喜欢
        • 2013-08-13
        • 2015-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-21
        • 2016-05-03
        • 1970-01-01
        相关资源
        最近更新 更多