Ci sono vari posti dove VARCHAR e TEXT fare o non differire. Alcune cose che dico:
- Se la lunghezza massima è superiore a 512 caratteri , vai con
TEXT. - Non utilizzare mai
TINYTEXT-- ha solo negativi relativi aVARCHAR(255). - Non utilizzare
VARCHAR(255); scegli un massimo ragionevole invece di 255. (Questa è un'ottimizzazione minore relativa alla tabella temporanea nelle query complesse.) - Usa
CHARsolo per cose che sono veramente a lunghezza fissa. In quasi tutti questi casi, virare suCHARACTER SET ascii(o latino1). (Altrimenti ci vorrà più spazio del previsto. - Usa
CHARACTER SET ut8mb4. (Le eccezioni stanno diventando sempre più rare.)
(Scusa, sto divagando. Torno in tema...)
I indicizzazione, nel layout delle righe di InnoDB (ci sono 4 differenti ROW_FORMATs ), ecc, VARCHAR(513) sarà essenzialmente indistinguibile da TEXT .
Uno dei pochi argomenti per VARCHAR è che limita il negozio alla lunghezza data. Ma quante volte è importante?