我刚刚在文档中注意到,在MySQL大于5.0.3的版本中,你可以使用大于255的值来声明varchar。过去我已经将数据类型切换为大于255的任何值,但我想知道它是否更好现在练习使用varchar(1000)或任何合适的长度来定义更大的字符串值。
现在这也适用于其他数据库,或者最好坚持使用255作为最大值并更改数据类型?
答案 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” - 任何以文本输入作为其数据源的内容。