いいえ、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に設定されている場合でも、のサイズは各行で引き続き使用されます 。