varchar (255) vs tinytext / tinyblob y varchar (65535) vs blob / text

92

Por definición:

VARCHAR: el rango de longitud es de 1 a 255 caracteres. Los valores VARCHAR se ordenan y comparan sin distinción entre mayúsculas y minúsculas, a menos que se proporcione la palabra clave BINARY. x + 1 bytes
TINYBLOB, TINYTEXT: Una columna BLOB o TEXT con una longitud máxima de 255 (2 ^ 8 - 1) caracteres x + 1 bytes

Entonces, en base a esto, creo la siguiente tabla:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

¿O es mejor crear un varchar o tinytext y por qué ?

¿Es lo mismo para:

VARCHAR: el rango de longitud es> 255 caracteres. Los valores VARCHAR se ordenan y comparan sin distinción entre mayúsculas y minúsculas, a menos que se proporcione la palabra clave BINARY. x + 2 bytes
BLOB, TEXT Una columna BLOB o TEXT con una longitud máxima de 65535 (2 ^ 16 - 1) caracteres x + 2 bytes

Tech4Wilco
fuente
VARCHAR necesita menos sobrecarga de memoria, pero por lo general se leerán completamente en la memoria, por lo que al final VARCHAR aún podría usar más memoria. Ambos son diferentes. Utiliza BLOB para almacenar datos binarios como una imagen, audio y otros datos multimedia. y VARCHAR para almacenar texto de cualquier tamaño hasta el límite.
Libro de Zeus

Respuestas:

10

En este caso varchares mejor.

Tenga en cuenta que varcharpuede ser de 1 a 65535 caracteres.

Los valores de las columnas VARCHAR son cadenas de longitud variable. La longitud se puede especificar como un valor de 0 a 255 antes de MySQL 5.0.3 y de 0 a 65.535 en 5.0.3 y versiones posteriores. La longitud máxima efectiva de un VARCHAR en MySQL 5.0.3 y posteriores está sujeta al tamaño máximo de fila (65 535 bytes, que se comparte entre todas las columnas) y al juego de caracteres utilizado. Consulte la Sección E.7.4, “Límites de recuento de columnas y tamaño de filas de la tabla”.

Los blobs se guardan en una sección separada del archivo.
Requieren una lectura de archivo adicional para incluir en los datos.
Por esta razón, varchar se obtiene mucho más rápido.

Si tiene un blob grande al que accede con poca frecuencia, entonces un blob tiene más sentido.
El almacenamiento de los datos de blob en un archivo separado (parte del) permite que el archivo de datos principal sea más pequeño y, por lo tanto, se obtenga más rápido.

Johan
fuente
Que esto sea mejor o no depende de sus patrones de acceso a los datos.
Michael Mior
1
¿Qué archivo separado podría ser?
glglgl
1
Los blobs no se guardan en un archivo separado. Pero se almacenan en una ubicación física separada del resto de las columnas.
Michael Mior
1
Tenga en cuenta que esto no solo depende de la frecuencia de acceso, sino también de las operaciones que se realizan en los datos. Por ejemplo, cualquier consulta que requiera un escaneo de tabla (que generalmente es mala de todos modos), pero no la columna de texto, se verá agravada por el mayor volumen de datos escaneados.
Michael Mior
1
También sospecho que los tipos de archivos que no usan esta columna pueden ser más eficientes si los datos se almacenan fuera de la página, aunque no estoy seguro de que el optimizador de consultas sea lo suficientemente inteligente como para no extraer estos datos.
Michael Mior