Ställer in NOT NULL
har ingen effekt i sig på prestandan. Några cykler för kontrollen - irrelevant.
Men du kan förbättra prestandan genom att faktiskt använda NULL istället för dummyvärden. Beroende på datatyper kan du spara mycket diskutrymme och RAM , och därigenom påskynda .. allt.
Null-bitmappen tilldelas endast om det finns några NULL-värden i raden . Det är en bit för varje kolumn i raden (NULL eller inte). För tabeller upp till 8 kolumner är null-bitmappen i praktiken helt gratis, med en extra byte mellan tupelhuvud och raddata. Därefter tilldelas utrymme i multipler av MAXALIGN
(vanligtvis 8 byte, som täcker 64 kolumner). Skillnaden går förlorad på stoppning. Så du betalar hela (lågt!) priset för det första NULL-värdet i varje rad . Ytterligare NULL-värden kan bara spara utrymme.
Minsta lagringskrav för alla icke-nullvärden är 1 byte (boolean
, "char"
, ...) eller vanligtvis mycket mer, plus (eventuellt) stoppning för justering. Läs mer om datatyper
eller kontrollera de blodiga detaljerna i systemtabellen pg_type
.
Mer om nolllagring: