2011-08-19 43 views
46

Me pregunto si tengo un VARCHAR de 200 caracteres y si pongo una cadena de 100 caracteres, ¿usará 200 bytes o simplemente usará el tamaño real de la cadena?Tamaño MySQL VARCHAR?

+0

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

+0

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

Respuesta

67

100 caracteres.

Este es el var (variable) en varchar: sólo se almacena lo que escribe (y un extra de 2 bytes para almacenar la longitud hasta 65535)

Si era char(200) entonces siempre habría almacenar 200 caracteres , rellena con 100 plazas

Consulte la documentación: "The CHAR and VARCHAR Types"

+3

no bytes, sino caracteres :) – Karolis

+9

Para ser claros: el almacenamiento de una cadena de 100 caracteres en un campo 'varchar (200)' tomará 101 bytes. Almacenar una cadena de 100 caracteres en un campo 'varchar (256)' tomará 102 bytes. Es por eso que ves 'varchar (255)' con tanta frecuencia; 255 caracteres es la cadena más larga que puede almacenar en el tipo 'varchar' de MySQL con solo un byte de sobrecarga. Cualquier cosa más grande requiere dos bytes de sobrecarga. – rinogo

+0

@rinogo ¿Eso no depende del juego de caracteres? ¿Estás asumiendo ASCII o qué? – mpen

8

VARCHAR significa que es un carácter de longitud variable, por lo que es va a tomar una s mucho espacio como sea necesario. Pero si sabía algo sobre la estructura subyacente, puede tener sentido restringir VARCHAR a una cantidad máxima.

Por ejemplo, si estaba almacenando comentarios del usuario, puede limitar el campo de comentarios a solo 4000 caracteres; si es así, no tiene sentido hacer que la tabla sql tenga un campo que es más grande que VARCHAR (4000).

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