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

aha*_*son 8 mysql database

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

这现在也与其他数据库一样常见,或者最好坚持使用255作为最大值并更改数据类型?

Mar*_*ois 6

在我看来,我会劝阻接近.当您需要超过255个字符时,使用TEXT更合适一些.

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

你必须知道VARCHAR和这样的字段直接存储到你的数据库中,例如TEXT将存储在行之外,为什么行内的指针链接到它.

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

例如,拥有多个可容纳65K字符的VARCHAR字段将是一个坏主意.

  • 小心解释原因?并不是说你错了,只是为了得到更好的答案. (2认同)

Mar*_*ark 5

VARCHAR列限制为65,535字节,并不总是表示65,535个字符,具体取决于您使用的字符集.

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

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


Ali*_*xel 5

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

我建议您将VARCHAR用作“单行代码”-任何具有文本输入作为其数据源的东西。