Varchar 或文本数据类型,字符串长度可达几千个字符
Varchar or Text Data Types for strings length up to few thousands of chars
我有一个小型社交网站,上面有帖子和评论。
我决定让用户使用他们想要的任意数量的字符创建帖子,我认为存储此类内容的最佳数据类型是 Text.
但是对于评论,在大多数情况下用户只写一行或几行文字。这就是为什么我认为我必须将评论字符串长度限制为最多 3000 甚至 6000 个字符。
那么,我的评论应该使用什么数据类型?
Varchar 或 Text?
根据您的要求使用四种可用的文本类型 [TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT] 中的一种。 http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
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
VARCHAR
和 TEXT
有很多不同之处。我说的一些话:
- 如果最大长度超过 512 个字符,请使用
TEXT
。
- 永远不要使用
TINYTEXT
-- 它只有相对于 VARCHAR(255)
的负值。
- 不要使用
VARCHAR(255)
;选择一个合理的最大值而不是 255。(这是与复杂查询中的温度 table 相关的小优化。)
- 仅对真正固定长度的事物使用
CHAR
。在几乎所有这种情况下,都使用 CHARACTER SET ascii
(或 latin1)。 (否则花费的 space 比您预期的要多。
- 使用
CHARACTER SET ut8mb4
。 (例外情况越来越少。)
(对不起,我跑题了。回到主题...)
I 索引,在 InnoDB 行的布局中(有 4 个不同的 ROW_FORMATs
)等,VARCHAR(513)
与 TEXT
.
本质上没有区别
VARCHAR
的几个参数之一是它将存储限制为给定的长度。但这有多重要?
我有一个小型社交网站,上面有帖子和评论。
我决定让用户使用他们想要的任意数量的字符创建帖子,我认为存储此类内容的最佳数据类型是 Text.
但是对于评论,在大多数情况下用户只写一行或几行文字。这就是为什么我认为我必须将评论字符串长度限制为最多 3000 甚至 6000 个字符。
那么,我的评论应该使用什么数据类型?
Varchar 或 Text?
根据您的要求使用四种可用的文本类型 [TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT] 中的一种。 http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
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
VARCHAR
和 TEXT
有很多不同之处。我说的一些话:
- 如果最大长度超过 512 个字符,请使用
TEXT
。 - 永远不要使用
TINYTEXT
-- 它只有相对于VARCHAR(255)
的负值。 - 不要使用
VARCHAR(255)
;选择一个合理的最大值而不是 255。(这是与复杂查询中的温度 table 相关的小优化。) - 仅对真正固定长度的事物使用
CHAR
。在几乎所有这种情况下,都使用CHARACTER SET ascii
(或 latin1)。 (否则花费的 space 比您预期的要多。 - 使用
CHARACTER SET ut8mb4
。 (例外情况越来越少。)
(对不起,我跑题了。回到主题...)
I 索引,在 InnoDB 行的布局中(有 4 个不同的 ROW_FORMATs
)等,VARCHAR(513)
与 TEXT
.
VARCHAR
的几个参数之一是它将存储限制为给定的长度。但这有多重要?