Dipende dall'uso che ne fai. Odio dare una risposta così generica, ma è vero. In genere, cerca di ottenere il tipo di dati il più specifico possibile. Se le tue stringhe non supereranno mai un limite superiore di caratteri, vai con VARCHAR
perché sarà un po' più efficiente. Se hai bisogno di più spazio, vai con TEXT
. Se non sei sicuro di quanto spazio occuperà il tuo testo, probabilmente dovresti andare con TEXT
; la differenza di prestazioni non è molto grande ed è meglio essere a prova di futuro piuttosto che rischiare di doverla modificare in seguito quando i requisiti cambiano. Solo i miei due centesimi.
Nei commenti, Pitarou sottolinea che, se MySQL crea una tabella temporanea per la tua query (vedi questo
), TEXT
le colonne non verranno archiviate in memoria e dovranno essere lette dal disco, che è molto più lento. (Fonte
, in fondo alla pagina.) Tuttavia, questo non dovrebbe avere importanza per la maggior parte delle query.
Nel caso qualcuno si stesse chiedendo come si confronta PostgreSQL, ho trovato questo benchmark ciò mostra che CHAR, VARCHAR e TEXT funzionano tutti ugualmente bene. Quindi, se stai usando Postgres, non importa quale tipo usi.