sql >> Databáze >  >> RDS >> PostgreSQL

Zvyšuje nastavení NOT NULL u sloupce v postgresql výkon?

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:



  1. konfigurace připojení k databázi v rámci Yii

  2. Nastavte všechny sloupce tabulky mysql na konkrétní hodnotu

  3. Jak normalizovat databázi SQL

  4. REPLACE pro MySQL bez ohledu na velikost písmen