Nein, die Verwendung von NULL nimmt nicht weniger Platz ein als ein leerer VARCHAR
oder INT
aufstellen. Tatsächlich kann es mehr beanspruchen Platz. Hier ist der Grund:
Ein VARCHAR
wird als Größe + Wert gespeichert. Die Anzahl der für die Größe verwendeten Bytes hängt von der maximalen Speicherkapazität des VARCHAR
ab . VARCHAR(255)
erfordert ein Byte, VARCHAR(65536)
erfordert zwei Bytes und so weiter.
Also VARCHAR(255)
Spalte nimmt ein Byte ein, selbst wenn Sie eine leere Zeichenfolge speichern. Die folgende Tabelle würde mindestens ein Byte pro Zeile benötigen (plus einige andere mögliche Overheads, abhängig von der Speicher-Engine).
CREATE TABLE sample (
a VARCHAR(255) NOT NULL
);
Um NULL
zu speichern -Werte verwendet MySQL eine Bitmaske für jede Zeile. Pro Byte können bis zu 8 Nullable-Spalten gespeichert werden. Wenn Sie also eine Tabelle wie diese haben:
CREATE TABLE sample (
a VARCHAR(255) NULL
);
Würde mindestens zwei Bytes pro Zeile benötigen. Speichern von NULL
setzt einfach das Bit, es ist bereits reserviert, ob Sie es verwenden oder nicht. Das Byte für VARCHAR
Die Größe von wird weiterhin für jede Zeile verwendet, auch wenn die Spalte auf NULL
gesetzt ist .