Che differenze ci sono tra VARCHAR lunghi e TEXT nei DB MySQL? In questo articolo trattiamo queste differenze e capiamo quale è meglio usare.
Se sei qui, è perché almeno una volta ti è capitato di dover creare un campo nella tua tabella che contiene un testo molto molto lungo, per esempio di 5000 caratteri al massimo.
Guardando i tipi che ci mette a disposizione MySQL per creare le tabelle, a fronte di questo dilemma che facciamo?
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
Usiamo un bel VARCHAR(5000) oppure un TEXT?
Come funziona VARCHAR e QUANDO usarlo
VARCHAR è stato pensato per contenere informaticoi non troppo lunghi.
Per intenderci, il suo ruolo si addice bene per le e-mail, i nomi di paesi e città, oggetti delle e-mail, nomi utenti e password.
Quindi, il suo obiettivo è quello di tenere salvate stringhe semplici e relativamente corte.
Questa è la prima differenza tra VARCHAR e TEXT.
Oltre a ciò, c’è un’altra peculiarità.
I dati di tipo VARCHAR, vengono salvati direttamente dentro la tabella in linea generale: che significa questo?
Significa che sono fisicamente memorizzati nella tabella in cui stiamo operando.
Questo, permette di seguire query in maniera molto più veloce ed efficiente.
A meno di alcune restrizioni e particolarità.
Per esempio, nei DB basati su InnoDB se si superano i 16KB di dimensioni effettive i dati vengono salvati al di fuori della tabella e qui lascio informazioni aggiuntive in merito.
E questo, dal punto di vista dell’efficienza, rallenta l’esecuzione delle query.
Fermiamoci un attimo.
Cosa significa “salvati al di fuori della tabella”?
Come funziona TEXT e QUANDO usarlo
Il tipo TEXT funziona in modo abbastanza simile a BLOB da un punto di vista del salvataggio.
Qui infatti, cominciamo a vedere la seconda ma più importante differenza tra VARCHAR e TEXT in MySQL e rispondo alla domanda di prima.
Siccome si tratta spesso e volentieri di contenuti molto grossi quelli contenuti dentro le colonne di tipo TEXT, non è efficiente tenerli salvati direttamente in tabella.
E allora, come vengono trattati? Puntatori.
I dati di tipo TEXT e BLOB proprio per rendere efficienti e rapide le query in termini di esecuzione, vengono salvati in file secondari rispetto a quello vero e proprio del database.
C’è un puntatore che fa riferimento al contenuto dentro la tabella così che si possa reperire il contenuto vero e proprio al di fuori della tabella.
Quindi, oltre a queste differenze tra VARCHAR e TEXT capiamo che TEXT è preferibile usarlo quando dobbiamo salvare informaticoi veramente lunghi e complessi.
Per esempio commenti, conversazioni, porzioni di HTML, elenchi, log…