2011-01-14 7 views
7

Ho appena notato nella documentazione che nelle versioni maggiori di 5.0.3 di MySQL è possibile dichiarare varchar con valori maggiori di 255. In passato ho cambiato i tipi di dati per qualcosa di più grande di 255 ma mi chiedo se sia una pratica migliore ora per definire valori di stringa più grandi usando varchar (1000) o qualsiasi lunghezza sia appropriata.È saggio dichiarare un VARCHAR con un valore maggiore di 255 in MySQL?

È comune anche con altri database, oppure è meglio attenersi a 255 come valore massimo e modificare i tipi di dati al di sopra di questo?

+6

Potrebbe voler dare un'occhiata a questa domanda: http://stackoverflow.com/questions/2023481/mysql-large-varchar-vs-text –

+0

Grazie. Abbastanza vicino alla mia domanda. – ahanson

risposta

4

Come suggerito da @Eric, i VARCHAR vengono archiviati nella tabella mentre i TESTI sono archiviati in un file separato: l'unico punto veramente importante da tenere presente quando si progetta una struttura di tabella è la limitazione della dimensione della riga (Limiti di MySQL ogni riga/record a 65 KB).

Ti suggerisco di utilizzare VARCHAR per "one-liners", qualsiasi cosa abbia un input di testo come origine dati.

6

A mio parere, vorrei scoraggiare l'approccio. Quando hai bisogno di più di 255 caratteri, usa TEXT sono più adatti.

Aggiornamento: VARCHAR è ora limitato a 65535 byte, ma una riga in MySQL non può contenere più di 65535 byte.

Devi sapere che VARCHAR e campi come quelli sono memorizzati direttamente nel tuo database quando TEXT per esempio verrà memorizzato fuori dalla riga perché un puntatore all'interno della riga che vi si collega.

Quindi, se si desidera utilizzare grande VARCHAR, assicurarsi che non siano troppo grandi e non interferiscano con il resto dei dati nella riga.

Ad esempio, disporre di campi VARCHAR più piccoli che possono contenere fino a 65 K caratteri sarebbe una cattiva idea.

+2

Cura spiegare perché? Non che tu abbia torto, solo che sarebbe una risposta molto migliore. – dkarp

+0

Ho aggiornato il mio anwser. –

5

La colonna VARCHAR è limitata a 65.535 byte, che non sempre significa 65.535 caratteri a seconda del set di caratteri che si sta utilizzando.

Se si utilizza il set di caratteri latin1 che è un byte per carattere, non si verificheranno problemi in quanto la lunghezza della stringa è uguale alla quantità di memoria necessaria.

Se si utilizza un set di caratteri che memorizza caratteri multibyte, è possibile impostare solo la lunghezza in base a quanto consentito dal set di caratteri. Ad esempio il set di caratteri utf8 può avere una lunghezza massima di 21.844 caratteri.

Problemi correlati