Nastavení NOT NULL
sama o sobě nemá žádný vliv na výkon. Několik cyklů pro kontrolu – irelevantní.
Výkon však můžete zlepšit tím, že místo fiktivních hodnot použijete hodnoty NULL. V závislosti na typech dat můžete ušetřit hodně místa na disku a paměti RAM , čímž se urychlí .. všechno.
Nulová bitmapa je přidělena pouze tehdy, pokud jsou v řádku nějaké hodnoty NULL . Je to jeden bit za každý sloupec v řádku (NULL nebo ne). U tabulek do 8 sloupců je nulová bitmapa efektivně zcela zdarma, používá se náhradní bajt mezi záhlavím n-tice a daty řádku. Poté je místo přiděleno v násobcích MAXALIGN
(obvykle 8 bajtů, pokrývajících 64 sloupců). Rozdíl je ztracen v polstrování. Zaplatíte tedy plnou (nízkou!) cenu za první hodnotu NULL v každém řádku . Další hodnoty NULL mohou pouze ušetřit místo.
Minimální požadavek na úložiště pro jakoukoli nenulovou hodnotu je 1 bajt (boolean
, "char"
, ...) nebo obvykle hodně více, plus (možná) vycpávka pro zarovnání. Přečtěte si o typech dat
nebo zkontrolujte krvavé podrobnosti v systémové tabulce pg_type
.
Více o nulovém úložišti: