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

时间:2011-01-14 15:37:10

标签: mysql database

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

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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:5)

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

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