type mediumtext long length column sql mysql database-design

sql - mediumtext - varchar(255) v tinyblob v tinytext



mysql varchar 1000 or text (3)

Mi pregunta complementaria es ¿realmente hay alguna diferencia entre tinyblob y tinytext?

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


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.


No puede aplicar CHARACTER SET a TINYTEXT, pero puede hacerlo a VARCHAR (255)


Principalmente requisitos de almacenamiento y manejo / velocidad de la memoria:

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

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

TINYBLOB, TINYTEXT:
L + 1 bytes, donde L <2 8

Además, mira esta publicación:

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

Un TEXTO / BLOB por otro lado está representado por un puntero de 8 bytes + una longitud de 1-4 bytes (dependiendo del tipo BLOB / TEXT). El BLOB / TEXT se asigna dinámicamente en el uso. Esto utilizará menos memoria, pero en algunos casos puede fragmentar su memoria a largo plazo.

Editar : como un lado, los blobs almacenan datos binarios y el texto almacena ASCII, esa es la única diferencia entre TINYBLOB y TINYTEXT.