NOT NULL
instellen heeft op zich geen effect op de prestaties. Een paar cycli voor de controle - niet relevant.
Maar u kunt de prestaties verbeteren door NULL's te gebruiken in plaats van dummy-waarden. Afhankelijk van het gegevenstype kunt u veel schijfruimte en RAM besparen , waardoor .. alles wordt versneld.
De null-bitmap wordt alleen toegewezen als er NULL-waarden zijn in de rij . Het is een beetje voor elke kolom in de rij (NULL of niet). Voor tabellen tot 8 kolommen is de null-bitmap in feite volledig gratis, met een reservebyte tussen tuple-koptekst en rijgegevens. Daarna wordt ruimte toegewezen in veelvouden van MAXALIGN
(meestal 8 bytes, die 64 kolommen beslaan). Het verschil gaat verloren aan opvulling. U betaalt dus de volledige (lage!) prijs voor de eerste NULL-waarde in elke rij . Extra NULL-waarden kunnen alleen ruimte besparen.
De minimale opslagvereiste voor elke niet-null-waarde is 1 byte (boolean
, "char"
, ...) of meestal veel meer, plus (mogelijk) opvulling voor uitlijning. Lees meer over gegevenstypen
of controleer de bloederige details in de systeemtabel pg_type
.
Meer over null-opslag:
- Gebruikt het gebruik van NULL in PostgreSQL nog steeds een NULL-bitmap in de header?
- De handleiding.