2011-04-13 6 views

Respuesta

19

En términos de espacio de almacenamiento necesario, es mejor con CHAR (2) debido a que el VARCHAR (2) tipo requerirá un byte adicional para almacenar la longitud:

 
Value CHAR(2) Storage Required VARCHAR(2) Storage Required 
''  ' '  2 bytes   ''   1 byte   
'a'  'a '  2 bytes   'a'   2 bytes   
'ab' 'ab'  2 bytes   'ab'  3 bytes   

Ver 10.4.1. The CHAR and VARCHAR Types para más detalles .

Más información: What's the difference between VARCHAR and CHAR?

+1

+1 para la tabla – reggie

4

En términos de espacio, CHAR (2) es mejor. Ver esto: http://dev.mysql.com/doc/refman/5.0/en/char.html

Si tenía más tiempo como CHAR (100) vs VARCHAR (100), que es mejor en el uso del espacio depende de los datos que tiene.

En cualquier caso, en términos de eficiencia de consultas, siempre es una buena idea tener registros de longitud fija cuando puede permitirse tenerlos (la BD puede optimizar mejor para columnas de longitud fija).

Así que CHAR (2) parece una victoria sobre VARCHAR (2) en términos de espacio y tiempo.

0

Me gustaría preguntar, sin embargo, ¿vale la diferencia de eficiencia entre varchar y char? Parece que cualquier mejora en el rendimiento sería, en el mejor de los casos, insignificante.

+1

Esto es más un comentario que una respuesta ... en cuanto a si hace una diferencia, dependerá del caso de uso. Con una longitud de 2, hay una sobrecarga del 50% en el almacenamiento por campo para VARCHAR2. Si hay una gran cantidad de campos y filas similares, comenzará a sumarse rápidamente. – forsvarir

0

En el almacenamiento, VARCHAR(255) es lo suficientemente inteligente como para almacenar solo la longitud que necesita en una fila determinada, a diferencia de CHAR(255) que siempre almacenaría 255 caracteres.

Cuestiones relacionadas