字符串的Varchar或Text数据类型,长度可达数千个字符

时间:2016-10-28 14:39:02

标签: mysql sqldatatypes

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

3 个答案:

答案 0 :(得分:4)

VARCHARTEXT有多种不同的地方。我说的一些事情:

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

(抱歉,我离题了。回到主题......)

我建立索引,在InnoDB行的布局中(有4个不同的ROW_FORMATs)等,VARCHAR(513)基本上与TEXT无法区分。

VARCHAR的少数论点之一是它将商店限制为给定的长度。但这有多重要?

答案 1 :(得分:1)

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

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

TINYTEXT 256字节

TEXT 65,535字节~64kb

MEDIUMTEXT 16,777,215字节~16MB

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

另见When to use TEXT in mysql instead of VARCHAR

答案 2 :(得分:0)

根据您的要求,使用四种TEXT中的一种[TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT]。 http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html