2011-01-14 95 views
7

我刚刚在文档中注意到,在MySQL版本大于5.0.3的版本中,您可以声明varchar的值大于255的值。过去,我为任何大于255的数据类型切换数据类型,但是我想知道是否更好现在使用varchar(1000)或任何适当长度定义较大的字符串值。在MySQL中声明一个值大于255的VARCHAR是明智的吗?

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

+6

可能想看看这个问题:http://stackoverflow.com/questions/2023481/mysql-large-varchar-vs-text – 2011-01-14 15:56:32

+0

谢谢。足够接近我的问题。 – ahanson 2011-01-14 19:30:08

回答

4

正如@Eric指出的答案,VARCHARs存储在表中,而TEXT存储在一个单独的文件中 - 在设计表结构时必须牢记的唯一真正重要的一点是行大小的限制MySQL限制每行/记录至65 KB)。

我建议你使用VARCHAR作为“单行” - 任何有文本输入作为数据源的东西。

6

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

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

您必须知道,VARCHAR和类似的字段直接存储到数据库中,例如TEXT时,将存储outisde为什么连接到它的行内的指针。

所以,如果你想使用大的VARCHAR,确保它们不会太大,不会干扰行中的其余数据。

例如,具有可包含高达65K字符的多字节VARCHAR字段将是一个坏主意。

5

VARCHAR列限制为65535字节,根据使用的字符集不一定总是65535个字符。

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

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