Nej, brug af NULL vil ikke optage mindre plads end en tom VARCHAR eller INT Mark. Faktisk kan det tage mere plads. Her er grunden:
En VARCHAR gemmes som en størrelse + værdi. Antallet af bytes, der bruges til størrelsen, afhænger af den maksimale lagring af VARCHAR . VARCHAR(255) kræver én byte, VARCHAR(65536) kræver to bytes og så videre.
Så at VARCHAR(255) kolonne fylder en byte, selvom du gemmer en tom streng. Den følgende tabel ville tage mindst én byte pr. række (plus nogle andre mulige overhead afhængigt af lagermotor).
CREATE TABLE sample (
a VARCHAR(255) NOT NULL
);
For at gemme NULL værdier, bruger MySQL en bitmaske for hver række. Der kan gemmes op til 8 nullbare kolonner pr. byte. Så hvis du har et bord som dette:
CREATE TABLE sample (
a VARCHAR(255) NULL
);
Vil tage minimum to bytes pr. række. Gemmer NULL indstiller bare bit, det er allerede reserveret, uanset om du bruger det eller ej. Byten for VARCHAR 's størrelse bruges stadig for hver række, selvom kolonnen er sat til NULL .