我有一个小型社交网站,有帖子和评论。
我决定让用户创建他们想要的任意数量的帖子,我认为用于存储这些内容的最佳数据类型是文本。
但是对于评论,在大多数情况下,用户只会写一行或几行文本。这就是为什么我认为我必须将注释字符串长度限制为最大3000或甚至6000个字符
那么,我应该使用什么数据类型来评论呢?
Varchar 或文字?
答案 0 :(得分:4)
VARCHAR
和TEXT
有多种不同的地方。我说的一些事情:
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
答案 2 :(得分:0)
根据您的要求,使用四种TEXT中的一种[TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT]。 http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html