Impostazione di NOT NULL
di per sé non ha alcun effetto sulle prestazioni. Pochi cicli per il controllo - irrilevante.
Ma puoi migliorare le prestazioni utilizzando effettivamente NULL invece di valori fittizi. A seconda dei tipi di dati, puoi risparmiare molto spazio su disco e RAM , velocizzando così .. tutto.
La bitmap nulla viene allocata solo se sono presenti valori NULL nella riga . È un po' per ogni colonna nella riga (NULL o meno). Per le tabelle fino a 8 colonne, la bitmap nulla è effettivamente completamente gratuita, utilizzando un byte di riserva tra l'intestazione della tupla e i dati di riga. Dopodiché, lo spazio viene allocato in multipli di MAXALIGN
(tipicamente 8 byte, che coprono 64 colonne). La differenza si perde per l'imbottitura. Quindi paghi il prezzo intero (basso!) per il primo valore NULL in ogni riga . Ulteriori valori NULL possono solo risparmiare spazio.
Il requisito minimo di archiviazione per qualsiasi valore non null è 1 byte (boolean
, "char"
, ...) o in genere molto più, più (possibilmente) imbottitura per l'allineamento. Leggi i tipi di dati
oppure controlla i dettagli cruenti nella tabella di sistema pg_type
.
Ulteriori informazioni sull'archiviazione nulla: