我看很多MySQL的表里varchar(256),好像就没见过再大的了 varchar的最大值是多少?大于多少就不适合了?要用text
闭关修行中......
根據官方文檔,VARCHAR 最多可以是 65535 字節(這也意味著一條記錄隻有這一個字段,因為 MySQL 一行隻能包含 65535 字節)。
然而,無法為這麼長的 VARCHAR 做索引,對於 MyISAM,可以對前 1000 個字節做索引,對於 InnoDB,則隻有 767 字節。(來源依據)
這裏說的是字節,考慮到編碼的因素(UTF-8 字符占1-3字節,GBK 字符占兩個字節),以及 VARCHAR 所有信息需要多 1 個字節(即空串也占 1 字節),使用 VARCHAR(256) 比較省事。
@xuecan 的回答一句很詳細了,我就補充一點。你看到的應該大多是varchar(255),而非256,原因是在4.1以下版本的mysql中varchar最大長度限製為255,其數據範圍可以是0~255或1~255(根據不同版本數據庫來定)。
這個問題聽說跟編碼有關~一般的需求都不會斤斤計較字節數,考慮到文本長度的可擴展性,大文本可以一律使用text.http://my.oschina.net/zimingforever/b...
根據官方文檔,VARCHAR 最多可以是 65535 字節(這也意味著一條記錄隻有這一個字段,因為 MySQL 一行隻能包含 65535 字節)。
然而,無法為這麼長的 VARCHAR 做索引,對於 MyISAM,可以對前 1000 個字節做索引,對於 InnoDB,則隻有 767 字節。(來源依據)
這裏說的是字節,考慮到編碼的因素(UTF-8 字符占1-3字節,GBK 字符占兩個字節),以及 VARCHAR 所有信息需要多 1 個字節(即空串也占 1 字節),使用 VARCHAR(256) 比較省事。
@xuecan 的回答一句很詳細了,我就補充一點。你看到的應該大多是varchar(255),而非256,原因是在4.1以下版本的mysql中varchar最大長度限製為255,其數據範圍可以是0~255或1~255(根據不同版本數據庫來定)。
這個問題聽說跟編碼有關~一般的需求都不會斤斤計較字節數,考慮到文本長度的可擴展性,大文本可以一律使用text.
http://my.oschina.net/zimingforever/b...