PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'impostazione NOT NULL su una colonna in postgresql aumenta le prestazioni?

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: