2010-10-07 107 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個字符。