2011-08-19 15 views
46

Mi chiedo, se ho un VARCHAR di 200 caratteri e che inserisco una stringa di 100 caratteri, userà 200 byte o userà solo la dimensione effettiva della stringa?Dimensione VARCHAR MySQL?

+0

Duplicate: http://stackoverflow.com/questions/1962310/importance-of-varchar-length-in-mysql-table –

+0

Un dettaglio blog: http://goo.gl/Hli6G3 –

risposta

67

100 caratteri.

Questa è la var (variabile) in varchar: memorizzare solo quello che si entra (e un extra di 2 byte a lunghezza memorizzare fino a 65535)

Se fosse char(200) allora si sarebbe sempre memorizzare 200 caratteri , imbottito con 100 posti

Vedere la documentazione: "The CHAR and VARCHAR Types"

+3

non byte ma caratteri :) – Karolis

+9

Per essere chiari: la memorizzazione di una stringa di 100 caratteri in un campo 'varchar (200)' richiederà 101 byte. La memorizzazione di una stringa di 100 caratteri in un campo 'varchar (256)' richiederà 102 byte. Questo è il motivo per cui vedi 'varchar (255)' così frequentemente; 255 caratteri è la stringa più lunga che è possibile memorizzare nel tipo 'varchar' di MySQL con un solo byte di overhead. Qualunque cosa più grande richiede due byte di overhead. – rinogo

+0

@rinogo Non dipende dal set di caratteri? Stai assumendo ASCII o cosa? – mpen

8

VARCHAR significa che è un carattere di lunghezza variabile, quindi è solo andando a prendere un s molto spazio necessario. Ma se sapessi qualcosa sulla struttura sottostante, , potrebbe aver senso limitare VARCHAR a un importo massimo.

Ad esempio, se si memorizzavano commenti dall'utente, è possibile limitare il campo di commento a soli 4000 caratteri nel campo di commento ; in caso affermativo, non ha alcun senso fare in modo che la tabella sql abbia un campo più grande di rispetto a VARCHAR (4000).

http://dev.mysql.com/doc/refman/5.0/en/char.html

Problemi correlati