Una muy rápida: ¿es más eficiente almacenar datos que podrían tener uno o dos caracteres como CHAR (2) o VARCHAR (2) en MySql?¿Cuál es más eficiente para una cadena de uno o dos caracteres: CHAR (2) o VARCHAR (2)?
Gracias!
Una muy rápida: ¿es más eficiente almacenar datos que podrían tener uno o dos caracteres como CHAR (2) o VARCHAR (2) en MySql?¿Cuál es más eficiente para una cadena de uno o dos caracteres: CHAR (2) o VARCHAR (2)?
Gracias!
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 para la tabla – reggie
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.
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.
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
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.
Los dos tipos de datos no son equivalentes. ¿Estás preguntando qué es más eficiente para almacenar cadenas de 2 caracteres exactos? – Matthew