2009-10-31 132 views
4

我有2列包含文本一個將是最多150個字符長,另一個最多700個字符長,
我的問題是,我應該使用這兩種varchar類型還是應該使用700字符長列的文本?爲什麼?text或varchar?

感謝,

回答

10

varchar數據類型在MySQL 5.0.3 <不能容納超過255個字符的數據。在MySQL> = 5.0.3中,它最多有65,535個字符。

因此,它取決於您定位的平臺以及您的部署要求。如果你想確保它會在不同的MySQL版本低於5.0.3工作,具有text類型數據字段去爲你再列

+0

感謝您的回覆 – Mike 2009-10-31 23:24:09

0

不知道關於MySQL明確,但在MS SQL中,如果您希望能夠對字段中的值進行任何比較,那麼您絕對應該使用VARCHAR來處理長度不超過8000個字符的任何內容。例如,對於VARCHAR,這將是可能的:

select your_column from your_table 
where your_column like '%dogs%' 

但不帶有TEXT字段。

有關MySQL 5.4中的TEXT字段的更多信息可以在here找到,關於VARCHAR字段的更多信息可以參見here

+2

在MySQL中,您可以在TEXT字段上使用FULL TEXT搜索索引,但前提是您使用的是MYISAM存儲引擎。其他表類型不支持它。 – Jason 2009-10-31 23:23:02

+0

您可以在MySQL中使用'LIKE'運算符和'text'字段。 – jason 2009-10-31 23:29:25

2

一個重要的考慮因素是,使用varchar數據庫將數據直接存儲在表中,並且使用文本數據庫存儲指向存儲數據的單獨表空間的指針。因此,除非遇到行長限制(MySQL中爲64K,DB2中爲4-32K,SQL Server 2000中爲8K),否則我通常會使用varchar。

0

我會根據輸入的數據類型選擇選項。例如,如果它是(可能)超長的用戶名和傳記,我會做varchar和文本。當然,你將生物限制爲700個字符,但如果你在路上添加HTML格式,保留700個字符的限制,但允許HTML標記格式化呢?

Twitter可能使用文本他們的鳴叫,因爲它可能會更快一些元數據添加到職位(例如URL HREF的和@user PK的)來緩存額外的數據,而不是caluclate它的每一個渲染。