可能重复:
Importance of varchar length in MySQL table
在使用VARCHAR时(假设这是一个短字符串的正确数据类型),大小有关系吗?如果我将其设置为20个字符,会占用更少的空间还是比255个字符更快?
发布于 2010-12-01 21:44:29
通常,对于VARCHAR字段,每个字段中存储的数据量决定了它在磁盘上的占用空间,而不是最大大小(不像CHAR字段总是具有相同的占用空间)。
存储在900字节(900 byte index size limit in character length)索引的所有字段中的总数据有上限。
您将字段设置得越大,人们就越有可能尝试将其用于您预期之外的目的--而且显示数值所需的屏幕空间也越大--因此,最好尝试选择合适的大小,而不是假设如果您将其设置得尽可能大,就可以省去重新设计的麻烦。
发布于 2010-12-01 21:44:26
是的,当您为多个列建立索引时,很重要。
前缀的长度最大可达1000字节(对于InnoDB表,长度为767字节)。请注意,前缀限制是以字节为单位测量的,而CREATE TABLE语句中的前缀长度被解释为字符数。为使用多字节字符集的列指定前缀长度时,一定要考虑到这一点。
来源:http://dev.mysql.com/doc/refman/5.0/en/column-indexes.html
在latin1排序规则中,最多只能指定3列varchar(255)
。
而最多可以为varchar(20)
指定50列
如果没有适当的索引,间接地,它将减慢查询速度
在存储方面,它没有什么不同,
as varchar
代表variable-length strings
发布于 2010-12-01 21:41:09
实际的区别是:
VARCHAR TINYTEXT和其他文本字段与内存中的行分开存储在MySQL堆中,而VARCHAR()字段加起来有64k的限制(因此您可以在TINYTEXT中使用64k以上的内容,而使用VARCHAR).
我通常更喜欢VARCHAR(255) -它们不会对单行造成太多的堆碎片,并且可以在MySQL中作为内存中的单个64k对象处理。在InnoDB上,大小差异可以忽略不计。
https://stackoverflow.com/questions/4324872
复制相似问题