在 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 是不是明智?的主要内容,如果未能解决你的问题,请参考以下文章