La maggior parte delle operazioni è più veloce per un semplice integer
, ma la differenza è molto piccola e in genere è l'ultima delle tue preoccupazioni durante l'ottimizzazione delle prestazioni.
La dimensione di archiviazione è più rilevante, ma la differenza tra i vari tipi di numeri interi è ancora molto piccola e spesso poco rilevante, a volte persa a causa del riempimento e dell'allineamento. Esistono altri tipi di dati che possono sprecare molto più spazio.
smallint
(int2
) occupa 2 byte su disco e nella RAM.integer
(int
, int4
) occupa 4 byte su disco e RAM.bigint
(int8
) occupa 8 byte su disco e in RAM.
Dettagli per i tipi numerici in Postgres nel manuale.
Esistono vari altri fattori per le dimensioni effettive dello spazio di archiviazione. Devi considerare l'overhead di pagina e tupla, allineamento e riempimento, possibili valori NULL, indicizzazione ...
Dettagli:
- Misurare le dimensioni di una riga di una tabella PostgreSQL
- Calcolo e risparmio di spazio in PostgreSQL
C'è del potenziale per l'ottimizzazione, ma in genere non molto. Concentrati al meglio sulla scelta di un tipo di dati appropriato per i tuoi dati e non preoccuparti di piccole differenze di archiviazione e prestazioni, a meno che tu non sappia esattamente cosa stai facendo.