关于数据库:在MySQL中声明值大于255的VARCHAR是明智的吗?

Is it wise to declare a VARCHAR with a value greater than 255 in MySQL?

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

这在其他数据库中也很常见吗,还是最好使用255作为最大值,并更改上面的数据类型?


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

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

您必须知道varchar和类似的字段是直接存储在数据库中的,例如,当文本存储在行外时,这就是为什么行内的指针链接到它。

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

例如,多个varchar字段最多可包含65K个字符是一个坏主意。


正如答案@eric指出的那样,varchar存储在表中,而文本存储在单独的文件中——在设计表结构时,您必须记住的唯一真正重要的一点是行大小限制(mysql将每个行/记录限制为65kb)。

我建议您使用varchars作为"一行程序"——任何有文本输入作为数据源的程序。


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

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

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