Mysql
 sql >> Database >  >> RDS >> Mysql

Tipi di dati Varchar o Text per stringhe di lunghezza fino a poche migliaia di caratteri

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 a VARCHAR(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 su CHARACTER 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?