2011-08-19 67 views
46

我想知道,如果我有200个字符的VARCHAR,并且我将一个由100个字符组成的字符串,它会使用200个字节还是只使用字符串的实际大小?MySQL的VARCHAR大小?

+0

重复:http://stackoverflow.com/questions/1962310/importance-of-varchar-length-in-mysql-table – 2011-08-19 15:45:18

+0

一个细节博客:http://goo.gl/Hli6G3 –

回答

67

100个字符。

这是VAR(变量)在varchar:你只存储您输入的内容(和一个额外的2个字节来存储长度高达65535)

如果是char(200)那么你永远保存200个字符,填充为100位

请参阅该文档:"The CHAR and VARCHAR Types"

+3

不是字节而是字符:) – Karolis

+9

要清楚:在一个'varchar(200)'字段中存储一个字符串100个字符将占用101个字节。在“varchar(256)”字段中存储100个字符的字符串需要102个字节。这就是为什么你经常看到'varchar(255)'的原因。 255个字符是可以存储在MySQL'varchar'类型中的最长字符串,只有一个字节的开销。任何更大的需要两个字节的开销。 – rinogo

+0

@rinogo这不取决于字符集?你是假设ASCII还是什么? – mpen

8

VARCHAR意味着它是一个可变长度的字符,所以才 要花费必要的空间。但是如果你知道关于底层结构的东西 ,那么将VARCHAR 限制到某个最大值是有意义的。

例如,如果您要存储来自用户的注释,则可能会将注释字段限制为4000个字符;如果是这样,它不 真的有什么意义,使sql表有一个字段比VARCHAR(4000)大 。

http://dev.mysql.com/doc/refman/5.0/en/char.html