sql >> Database teknologi >  >> RDS >> Mysql

Diskplads implikationer af at indstille MySQL kolonneværdi til NULL i stedet for 0 eller ''

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 .



  1. Brug af ALTER til at slette en kolonne, hvis den findes i MySQL

  2. Tæl rækkerne med samme ID i php

  3. COUNT i en forespørgsel med flere JOINS og en GRUPPE EFTER KLAUSUL

  4. Aktiver fjernadgang til MySQL-database