sql >> Databasteknik >  >> RDS >> Mysql

Diskutrymmeskonsekvenser av att ställa in MySQL-kolumnvärdet till NULL istället för 0 eller ''

Nej, att använda NULL tar inte upp mindre utrymme än en tom VARCHAR eller INT fält. Faktum är att det kan ta mer Plats. Här är anledningen:

En VARCHAR lagras som en storlek + värde. Antalet byte som används för storleken beror på maxlagringen av VARCHAR . VARCHAR(255) kräver en byte, VARCHAR(65536) kräver två byte och så vidare.

Så att VARCHAR(255) kolumnen tar upp en byte även om du lagrar en tom sträng. Följande tabell skulle ta minst en byte per rad (plus några andra möjliga overhead beroende på lagringsmotor).

CREATE TABLE sample (
  a VARCHAR(255) NOT NULL
);

För att spara NULL värden använder MySQL en bitmask för varje rad. Upp till 8 nollbara kolumner kan lagras per byte. Så om du har ett sådant här bord:

CREATE TABLE sample (
  a VARCHAR(255) NULL
);

Skulle ta minst två byte per rad. Lagrar NULL ställer bara in biten, den är redan reserverad oavsett om du använder den eller inte. Byten för VARCHAR s storlek används fortfarande för varje rad även om kolumnen är inställd på NULL .



  1. Lexing partiell SQL i C#

  2. Hämta den senaste raden med grupp efter och Laravel

  3. Skapa databaser med liquibase på tom mysql-instans

  4. Problem med att ansluta till mysql-server:ERROR 2003 (HY000)