いいえ、NULLを使用しても、空のVARCHAR
よりも少ないスペースを使用することはありません。 またはINT
分野。実際、もっとかかる場合があります スペース。理由は次のとおりです:
VARCHAR
サイズ+値として保存されます。サイズに使用されるバイト数は、VARCHAR
の最大ストレージによって異なります。 。 VARCHAR(255)
1バイト、VARCHAR(65536)
が必要です 2バイトなどが必要です。
そのため、VARCHAR(255)
空の文字列を格納しても、列は1バイトを占めます。次の表は、行ごとに最低1バイトかかります(さらに、ストレージエンジンに応じて他の可能なオーバーヘッドもあります)。
CREATE TABLE sample (
a VARCHAR(255) NOT NULL
);
NULL
を保存するには 値の場合、MySQLは各行にビットマスクを使用します。 1バイトあたり最大8つのNULL可能列を格納できます。したがって、次のようなテーブルがある場合:
CREATE TABLE sample (
a VARCHAR(255) NULL
);
行ごとに最低2バイトかかります。 NULL
の保存 ビットを設定するだけで、使用するかどうかに関係なく、すでに予約されています。 VARCHAR
のバイト 列がNULL
に設定されている場合でも、のサイズは各行で引き続き使用されます 。