7.3.4 String types
Column type | Storage required |
CHAR(M) | M bytes, 1 <= M <= 255 |
VARCHAR(M) | L +1 bytes, where L <= M and 1 <= M <= 255 |
TINYBLOB , TINYTEXT | L +1 bytes, where L < 2^8 |
BLOB , TEXT | L +2 bytes, where L < 2^16 |
MEDIUMBLOB , MEDIUMTEXT | L +3 bytes, where L < 2^24 |
LONGBLOB , LONGTEXT | L +4 bytes, where L < 2^32 |
ENUM('value1','value2',...) | 1 or 2 bytes, depending on the number of enumeration values (65535 values maximum) |
SET('value1','value2',...) | 1, 2, 3, 4 or 8 bytes, depending on the number of set members (64 members maximum) |
VARCHAR
and the BLOB
and TEXT
types are variable-length types, for which the storage requirements depend on the actual length of column values (represented by L
in the preceding table), rather than on the type's maximum possible size. For example, a VARCHAR(10)
column can hold a string with a maximum length of 10 characters. The actual storage required is the length of the string (L
), plus 1 byte to record the length of the string. For the string 'abcd'
, L
is 4 and the storage requirement is 5 bytes.
The BLOB
and TEXT
types require 1, 2, 3 or 4 bytes to record the length of the column value, depending on the maximum possible length of the type.
If a table includes any variable-length column types, the record format will also be variable-length. Note that when a table is created, MySQL may under certain conditions change a column from a variable-length type to a fixed-length type, or vice-versa. See section 7.7.1 Silent column specification changes.
The size of an ENUM
object is determined by the number of different enumeration values. 1 byte is used for enumerations with up to 255 possible values. 2 bytes are used for enumerations with up to 65535 values.
The size of a SET
object is determined by the number of different set members. If the set size is N
, the object occupies (N+7)/8
bytes, rounded up to 1, 2, 3, 4 or 8 bytes. A SET
can have a maximum of 64 members.
Comments