Требования к хранению каждого из типов столбцов, поддерживаемых MySQL, перечислены по категориям (табл.).
Максимальный размер строки таблицы MylSAM составляет 65534 байта. Каждый столбец BLOB и TEXT занимает только от пяти до девяти байт, в зависимости от размера.
Если таблицы MyISAM или ISAM содержат столбцы любых типов с переменной длиной, формат строки таблицы также будет переменной длины. При создании таблицы при некоторых условиях MySQL может изменять тип столбца с типа с фиксированной длиной на тип с переменной длиной и наоборот. См. раздел Неявные изменения спецификаций столбцов.
Типы VARCHAR, BLOB и TEXT являются типами с переменной длиной. Для каждого из них требования по хранению зависят от фактического размера значений столбцов (представленных в предыдущей таблице как L), а не от максимально возможного размера типа. Например, столбец типа VARCHAR( 10) может содержать строки длиной максимум в 10 символов. Фактический размер хранения складывается из длины строки (L) плюс один байт, хранящий фактическую длину. Для строки ‘absd’ L равно 4, и для хранения значения нужно 5 байт.
Типы BLOB и TEXT требуют 1, 2, 3 или 4 байта для записи длины значения столбца, в зависимости от максимально возможной длины конкретного типа. См. раздел Тип TIME
Размер объекта типа ENUM определяется количеством различных перечислимых значений. Один байт используется для перечислений, имеющих до 255 возможных значений. Два байта используются для перечислений, имеющих до 65535 возможных значений. См. раздел Тип YEAR
Таблица Требования по хранению для различных тпов столбцов.
Требования по хранению числовых типов | |
TINYINT | ] байт |
SMALLINT | 2 байта |
MEDIUMINT | 3 байта |
INT, INTEGER | 4 байта |
BIGINT | 8 байт |
FLOAT(p) | 4 байта, если 0 <- р <= 24, 8 байт, если 25 <= р <= 53 |
FLOAT | 4 байта |
DOUBLE [PRECISION], REAL | 8 байт |
DECIMAL [M, D), NUMERIC [M, D) | т-2 байт, если D> 0,M+l байт, если Я= 0 (IH-2, если М< £) |
Требования по хранению типов даты и времени |
|
DATE | 3 байта |
DATETIME | 8 байт |
TIMESTAMP | 4 байта |
TIME | 3 байта |
YEAR | 1байт |
Требования по хранению строковых типов | |
CHAR(M) | Мбайт,0<=М<=255 |
VARCHAR(M) | L+1 байт, где I <= Ми 0 <= М<= 255 |
TINYBLOB, TINYTEXT | L+ байт, гдеL < 28 |
BLOB, TEXT | Ь+2байт,гдеL<216 |
MEDIUMBLOB, MEDIUMTEXT | L+3 байт, где L< 224 |
LONGBLOB, LONGTEXT | L+4 байт, где L < 232 |
ENUM(‘значение!’, ‘значение2’,… ) | 1 или 2 байта, в зависимости от числа допустимых значений (максимум 65535) |
SET(‘значение!’, 1значение2*, …) | 1, 2, 3,4 или 8 байт, в зависимости от числа членов набора (максимум 64) |
Размер объекта типа SET определяется количеством различных членов набора. Если размер набора равен N, то объект занимает (АН-7)/8, округленное до ближайшего большего значения из ряда 1, 2, 3, 4 или 8, байт. SET может иметь максимум 64 члена. См. раздел Тип SET