2011-08-19 68 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