84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我看很多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...