Indstilling af NOT NULL
har ingen effekt i sig selv på ydeevnen. Et par cyklusser til kontrollen - irrelevant.
Men du kan forbedre ydeevnen ved faktisk at bruge NULL'er i stedet for dummy-værdier. Afhængigt af datatyper kan du spare meget diskplads og RAM , og derved fremskynde .. alt.
Null bitmap tildeles kun, hvis der er nogen NULL værdier i rækken . Det er en smule for hver kolonne i rækken (NULL eller ej). For tabeller op til 8 kolonner er null-bitmap faktisk helt gratis ved at bruge en ekstra byte mellem tuple header og rækkedata. Derefter tildeles plads i multipla af MAXALIGN
(typisk 8 bytes, der dækker 64 kolonner). Forskellen er tabt til polstring. Så du betaler den fulde (lave!) pris for den første NULL-værdi i hver række . Yderligere NULL-værdier kan kun spare plads.
Minimumskravet til lager for enhver værdi, der ikke er null, er 1 byte (boolean
, "char"
, ...) eller typisk meget mere, plus (muligvis) polstring til justering. Læs mere om datatyper
eller tjek de blodige detaljer i systemtabellen pg_type
.
Mere om null storage: