2010-10-07 195 views
0

我的服务器有我的SQL版本5.0.91-community,现在我必须存储一个长度约500字符或多或少的字符串,我想用文本数据类型去,但后来有人告诉我它会降低性能,我想知道更多关于varchar的知识,并且它是有限的。关于varchar数据类型的困惑

我曾经认为varchar仅限于255个字符,但随后我在某处读到它能够存储更多的那个在新版本中,即> = 5.0.3,因为我使用的是5.0.91你认为我应该用吗?如果我使用它像varchar(1000)它仍然有效?

谢谢。

回答

2

的文档here

  • VARCHAR拥有65,535最大尺寸在MySQL 5.0.3或更高版本,5.0.3之前的下限为255

注意,有效大小更小,

在MySQL 5.0.3及更高版本中,VARCHAR的有效最大长度为 是 受限于最大行大小 (65,535字节,它在 所有列中共享)和使用的字符集 。

您必须指定最大尺寸,例如, varchar(1000)。只是说明varchar是不够的。

+0

好吧,是不是varchar意味着动态地利用存储?如果是的话,我可以将它定义为VARCHAR,还是必须提及我要使用多少个字符?像VARCHAR(1000) – 2010-10-07 09:00:02

2

从在VARCHAR列The CHAR and VARCHAR Types

值是 可变长度字符串。长度 可以指定为0到 65,535之间的值。 VARCHAR的有效最大长度为 受限于行大小的最大值(65,535字节,即所有列之间共享的 )以及使用的 字符集。

+0

我之前看到过,因为它没有在那里清楚地提到而感到困惑。仍然感谢你为我所感谢的努力。 :) – 2010-10-07 08:58:02

2

根据MySQL的DOC:

TEXT从VARCHAR不同之处在于以下方面:

  • 没有拖尾空间去除用于TEXT列当值被存储或检索。在MySQL 5.0.3之前,这与VARCHAR不同,在存储值时会删除尾随空格。
  • 对于TEXT列上的索引,您必须指定一个索引前缀长度。对于CHAR和VARCHAR,前缀长度是可选的。
  • TEXT列不能有DEFAULT值。

除了这些差异之外,像使用TEXT一样使用VARCHAR,所以大小的问题并不是应该让您在这两者之间进行选择,除非您确实需要存储不超过1000个字符。