Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Implikacje dotyczące miejsca na dysku ustawienia wartości kolumny MySQL na NULL zamiast 0 lub „”

Nie, użycie NULL nie zajmie mniej miejsca niż pusty VARCHAR lub INT pole. W rzeczywistości może zająć więcej przestrzeń. Oto dlaczego:

VARCHAR jest przechowywany jako rozmiar + wartość. Liczba bajtów użytych do określenia rozmiaru zależy od maksymalnej pojemności VARCHAR . VARCHAR(255) wymaga jednego bajtu, VARCHAR(65536) wymaga dwóch bajtów i tak dalej.

Tak więc VARCHAR(255) kolumna zajmuje jeden bajt, nawet jeśli przechowujesz pusty ciąg. Poniższa tabela zajęłaby co najmniej jeden bajt na wiersz (plus kilka innych możliwych narzutów w zależności od silnika pamięci masowej).

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

Aby zapisać NULL wartości, MySQL używa maski bitowej dla każdego wiersza. Na bajt można przechowywać do 8 kolumn dopuszczających wartość null. Więc jeśli masz taki stół:

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

Zajmie co najmniej dwa bajty na wiersz. Przechowywanie NULL po prostu ustawia bit, jest już zarezerwowany, niezależnie od tego, czy go używasz, czy nie. Bajt dla VARCHAR rozmiar jest nadal używany dla każdego wiersza, nawet jeśli kolumna jest ustawiona na NULL .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie nieprzetworzonego ciągu zapytania SQL z przygotowanych instrukcji PDO

  2. Ciąg znaków MySQL do DATE / TIME lub TIMESTAMP

  3. Pobieranie zbiorów kolejnych dat

  4. Dziwne MySQL Popup Instalator Mysql działa w trybie społeczności

  5. SQLAlchemy:Utwórz zapytanie usuwające za pomocą samodzielnego łączenia w MySQL