Ustawienie NOT NULL
nie ma wpływu per se na wydajność. Kilka cykli do sprawdzenia - nieistotne.
Ale możesz poprawić wydajność, używając wartości NULL zamiast wartości fikcyjnych. W zależności od typów danych możesz oszczędzić dużo miejsca na dysku i pamięci RAM , przyspieszając w ten sposób .. wszystko.
Pusta bitmapa jest przydzielana tylko wtedy, gdy w wierszu znajdują się jakiekolwiek wartości NULL . To jeden bit za każdy kolumna w wierszu (NULL lub nie). W przypadku tabel do 8 kolumn bitmapa zerowa jest całkowicie darmowa, wykorzystując zapasowy bajt między nagłówkiem krotki a danymi wiersza. Następnie przestrzeń jest przydzielana w wielokrotnościach MAXALIGN
(zazwyczaj 8 bajtów, obejmujących 64 kolumny). Różnica ginie w wyściółce. Więc płacisz pełną (niską!) cenę za pierwszą wartość NULL w każdym wierszu . Dodatkowe wartości NULL mogą tylko zaoszczędzić miejsce.
Minimalne wymaganie pamięci dla każdej wartości innej niż null to 1 bajt (boolean
, "char"
, ...) lub zazwyczaj dużo więcej, plus (ewentualnie) wyściółka do wyrównania. Przeczytaj o typach danych
lub sprawdź krwawe szczegóły w tabeli systemowej pg_type
.
Więcej o pamięci zerowej: