2008-09-27 17 views
13

Mi pregunta de lado es realmente hay alguna diferencia entre tinyblob & tinytext?varchar (255) v tinyblob v tinytext

Comprar mi pregunta real es ¿qué razón, si hay alguna, elegiría varchar (255) sobre tinyblob o tinytext?

Respuesta

16

Principalmente storage requirements y manejo de memoria/velocidad:

En la siguiente tabla, M representa la longitud de la columna declarada en caracteres de tipos de cadenas no binarias y bytes para tipos de cadenas binarias. L representa la longitud real en bytes de un valor de cadena dado.

VARCHAR (M), VARBINARY (M):
L + 1 bytes si los valores de columna requieren 0 - 255 bytes,
L + 2 bytes si los valores pueden requerir más de 255 bytes

TINYBLOB, TINYTEXT:
L + 1 bytes, donde L

Además, ver this mensaje:

Para cada tabla en uso, MySQL asigna memoria para 4 filas. Para cada una de estas columnas , la columna CHAR (X)/VARCHAR (X) toma en los caracteres X.

A TEXT/BLOB por otro lado es representado por un puntero de 8 bytes + una longitud byte 1-4 (dependiendo del tipo BLOB/TEXT). El BLOB/TEXT es asignado dinámicamente en el uso. Esto hará que use menos memoria, pero en algunos casos puede fragmentar su memoria en la ejecución larga .

Editar: Como acotación al margen, manchas almacenar datos binarios y tiendas de texto ASCII, esa es la única diferencia entre TINYBLOB y TINYTEXT.

5

VARCHAR (255) es más estándar de SQL que tinyblob o tinytext. Por lo tanto, su secuencia de comandos y su aplicación serían más portátiles entre los proveedores de bases de datos.

-8

No se puede aplicar conjunto de caracteres a TINYTEXT, pero se puede a VARCHAR (255)

+2

que no es verdad, se puede aplicar tanto al conjunto de caracteres VARCHAR y TINYTEXT (en MySQL), pero no a TINYBLOB. –