Mysql Varchar或文本数据类型,用于长度高达几千个字符的字符串

Mysql Varchar或文本数据类型,用于长度高达几千个字符的字符串,mysql,sqldatatypes,Mysql,Sqldatatypes,我有一个小的社交网站,上面有帖子和评论 我决定让用户使用任意数量的字符创建帖子,我认为存储这些内容的最佳数据类型是文本 但对于评论,在大多数情况下,用户只写一行或几行文字。这就是为什么我认为我必须将注释字符串长度限制在3000个字符甚至6000个字符左右的最大值。 那么,我的评论应该使用什么数据类型? Varchar或Text?根据您的要求,使用可用的四种文本类型之一[TINYTEXT、Text、MEDIUMTEXT和LONGTEXT] VARCHAR列中的值是可变长度字符串。长度可以指定为0到

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

VarcharText

根据您的要求,使用可用的四种文本类型之一[TINYTEXT、Text、MEDIUMTEXT和LONGTEXT]

VARCHAR列中的值是可变长度字符串。长度可以指定为0到65535之间的值,该值似乎足够大,可以处理用户预期的注释长度

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

TINYTEXT 256字节

文本65535字节~64kb

MEDIUMTEXT 16777215字节~16MB

长文本4294967295字节~4GB


另请参见

在不同的地方,
VARCHAR
TEXT
有区别或没有区别。我说的一些话:

  • 如果最大长度超过512个字符,请使用
    TEXT
  • 永远不要使用
    TINYTEXT
    ——它只有相对于
    VARCHAR(255)
    的负数
  • 不要使用
    VARCHAR(255)
    ;选择一个合理的最大值,而不是255。(这是一个与复杂查询中的临时表相关的小优化。)
  • 仅对真正固定长度的内容使用
    CHAR
    。在几乎所有这样的情况下,加上
    字符集ascii
    (或拉丁文1)。(否则它将占用比您预期的更多的空间
  • 使用
    字符集ut8mb4
    (例外情况越来越少。)
(对不起,我离题了。回到话题上来……)

I索引,在InnoDB行的布局中(有4种不同的
ROW\u格式
),等等,
VARCHAR(513)
基本上与
文本
无法区分


VARCHAR
为数不多的几个参数之一是,它将存储限制在给定的长度。但这一点有多重要?

Thnx,在链接源代码中,作者写道:“VARCHAR与表内联存储。当大小合理时,VARCHAR速度更快。”,那么VARCHAR(3000)是否被认为是合理的大小?