Scegli il tipo più piccolo che contiene correttamente ogni valore che memorizzerai. Il tipo giusto fa risparmiare spazio su disco, riduce gli indici e previene la corruzione silenziosa dei dati.
Scegli il tipo più piccolo che contiene correttamente ogni valore che memorizzerai. Il tipo giusto fa risparmiare spazio su disco, riduce gli indici e previene la corruzione silenziosa dei dati.
INT (4 byte) per la maggior parte degli id; BIGINT (8 byte) solo quando superi davvero i ~2,1 miliardi.DECIMAL(10,2) per il denaro — mai FLOAT/DOUBLE, che arrotondano in binario e perdono i centesimi.VARCHAR(n) per testo di lunghezza limitata (nomi, email); n è un tetto massimo, lo storage occupa solo ciò che usi.TEXT per blob di grandi dimensioni (articoli) — è memorizzato off-page e non può avere un default; non usarlo per valori brevi su cui filtri.DATETIME (senza timezone, 8 byte) vs TIMESTAMP (convertito in UTC, 4 byte, limite ~2038).CREATE TABLE payments (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
amount DECIMAL(10,2) NOT NULL, -- denaro esatto, non FLOAT
currency CHAR(3) NOT NULL, -- sempre 3 caratteri -> CHAR fisso
note VARCHAR(255), -- limitato, indicizzabile
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Insidia: la SQL mode predefinita rifiuta i valori errati (bene) --
INSERT INTO payments (amount) VALUES ('abc'); -- ERROR 1366, non un silenzioso 0
FLOAT per il denaro.VARCHAR(255) ovunque per abitudine — chiavi sovradimensionate gonfiano gli indici.UNSIGNED su id/conteggi che non sono mai negativi (raddoppia l'intervallo positivo).I tipi di dato sono la decisione di correttezza e performance più economica che prendi, e la più difficile da cambiare in seguito — tipi stretti ed esatti mantengono gli indici piccoli e fermano i dati errati sulla soglia, prima che diventino un bug in produzione.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona