在 MySQL 中声明值大于 255 的 VARCHAR 是不是明智?

Posted

技术标签:

【中文标题】在 MySQL 中声明值大于 255 的 VARCHAR 是不是明智?【英文标题】:Is it wise to declare a VARCHAR with a value greater than 255 in MySQL?在 MySQL 中声明值大于 255 的 VARCHAR 是否明智? 【发布时间】:2011-06-09 05:32:35 【问题描述】:

我刚刚在文档中注意到,在大于 5.0.3 的 mysql 版本中,您可以使用大于 255 的值声明 varchar。过去我已经切换了大于 255 的数据类型,但我想知道它是否更好现在练习使用 varchar(1000) 或任何合适的长度来定义更大的字符串值。

现在这在其他数据库中也很常见,还是最好坚持使用 255 作为最大值并更改高于该值的数据类型?

【问题讨论】:

可能想看看这个问题:***.com/questions/2023481/mysql-large-varchar-vs-text 谢谢。足够接近我的问题了。 【参考方案1】:

正如@Eric 指出的答案所暗示的那样,VARCHAR 存储在表中,而 TEXT 存储在单独的文件中 - 设计表结构时唯一真正重要的一点是行大小限制(MySQL将每行/记录限制为 65 KB)。

我建议您将 VARCHAR 用于“单行” - 将文本输入作为其数据源的任何内容。

【讨论】:

【参考方案2】:

在我看来,我不鼓励接近。当你需要超过 255 个字符时,使用 TEXT 更合适一些。

更新: VARCHAR 现在限制为 65535 字节,但 MySQL 中的一行不能包含超过 65535 字节。

您必须知道 VARCHAR 和类似的字段会直接存储到您的数据库中,例如 TEXT 将存储在行之外,为什么行内的指针链接到它。

因此,如果您想使用大 VARCHAR,请确保它们不会太大并且不会干扰行中的其余数据。

例如,拥有最多可包含 65K 字符的多个 VARCHAR 字段将是一个坏主意。

【讨论】:

想解释一下为什么?不是你错了,只是它会得到一个更好的答案。 255以上,varchar linkedin.com/pulse/mysql-large-varchar-vs-text-omer-k-niah多出一个字节【参考方案3】:

VARCHAR 列限制为 65,535 个字节,这并不总是意味着 65,535 个字符,具体取决于您使用的字符集。

如果您使用每个字符一个字节的latin1 字符集,您不会遇到任何问题,因为字符串的长度与所需的存储量相同。

如果您使用存储多字节字符的字符集,您只能将长度设置为字符集允许的长度。例如,utf8 字符集的最大长度为 21,844 个字符。

【讨论】:

以上是关于在 MySQL 中声明值大于 255 的 VARCHAR 是不是明智?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 数据类型

shell脚本或C程序返回值为什么不能大于255

Mysql常用优化方案

为啥 tinyint 在 MySQL 中不能存储超过 255 的数字?

MySql 查询,选择大于

matlab图像的矩阵点乘后,所得的值溢出问题,该怎么解决?