以下に、MySQL でサポートしている各カラム型に必要な記憶容量をカテゴリ別に示します。
数値型に必要な記憶容量
カラム型 | 必要な記憶容量 |
TINYINT |
1 バイト |
SMALLINT |
2 バイト |
MEDIUMINT |
3 バイト |
INT |
4 バイト |
INTEGER |
4 バイト |
BIGINT |
8 バイト |
FLOAT(X) |
X <= 24 の場合は 4 バイト、25 <= X <= 53 の場合は 8 バイト |
FLOAT |
4 バイト |
DOUBLE |
8 バイト |
DOUBLE PRECISION |
8 バイト |
REAL |
8 バイト |
DECIMAL(M,D) |
D > 0 の場合は M+2 バイト、D = 0
の場合は M+1
バイト(M < D の場合は
D +2 バイト) |
NUMERIC(M,D) |
D > 0 の場合は M+2 バイト、D = 0
の場合は M+1
バイト(M < D の場合は
D +2 バイト) |
日付型と時刻型に必要な記憶容量
カラム型 | 必要な記憶容量 |
DATE |
3 バイト |
DATETIME |
8 バイト |
TIMESTAMP |
4 バイト |
TIME |
3 バイト |
YEAR |
1 バイト |
文字列型に必要な記憶容量
カラム型 | 必要な記憶容量 |
CHAR(M) |
M バイト(1 <= M <=
255 ) |
VARCHAR(M) |
L +1 バイト(L <= M
で、かつ 1 <= M <= 255 ) |
TINYBLOB 、TINYTEXT
|
L +1 バイト(L < 2^8) |
BLOB 、TEXT
|
L +2 バイト(L < 2^16) |
MEDIUMBLOB 、MEDIUMTEXT
|
L +3 バイト(L < 2^24) |
LONGBLOB 、LONGTEXT
|
L +4 バイト(L < 2^32) |
ENUM('value1','value2',...) |
列挙値の数(最大 65535 個の値)に応じて、1 または 2 バイト |
SET('value1','value2',...) |
セット要素の数(最大 64 個の要素)に応じて、1、2、3、4、8 バイトのいずれか |
VARCHAR
型、および
BLOB
型と TEXT
型は可変長であり、必要な記憶容量は、その型で使用できる最大サイズではなく、カラム値の実際の長さ(上の表の
L
)に応じて決まります。たとえば、VARCHAR(10)
のカラムには、最大 10
文字の長さの文字列を格納することができます。実際に必要な記憶容量は、文字列の長さ(L
)に、その文字列の長さを記録するために必要な
1 バイトを加えたものです。'abcd'
という文字列の場合、L
は 4
であり、必要な記憶容量は 5
バイトになります。
BLOB
型と TEXT
型では、その型で使用できる最大長に応じて、カラム値の長さを記録するために、1、2、3、または
4 バイトが必要になります See
項6.2.3.2. 「BLOB
型と TEXT
型」。
テーブルに可変長のカラム型が含まれている場合、記録形式も可変長になります。 注意: MySQL では、テーブルの作成時、一定の条件下でカラムが可変長型から固定長型(またはその逆)に変換される場合があります。 See 項6.5.3.1. 「カラムの暗黙的な変更」。
ENUM
型オブジェクトのサイズは、異なる列挙値の数で決まります。使用可能な値の数が
255 までの列挙には、1
バイトが使用されます。値の数が 65535
までの列挙には、2 バイトが使用されます。 See
項6.2.3.3. 「ENUM
型」。
SET
型オブジェクトのサイズは、異なるセット要素の数で決まります。セットのサイズが
N
の場合、そのオブジェクトは
(N+7)/8
バイト(1、2、3、4、または
8
バイトに切り上げ)を占有します。SET
には最大 64
個の要素を組み込むことができます。 See
項6.2.3.4. 「SET
型」。
MyISAM
テーブルの 1
つのレコードの最大サイズは 65534
バイトです。各 BLOB
型と
TEXT
型は、このサイズに対して 5
〜 9 バイトしか占有しません。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.