2011-01-14 93 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個字符的最大長度。