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
CHAR
solo 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?