Duplicar posibles:
MySQL: Large VARCHAR vs. TEXT?para usar texto en mysql en lugar de VARCHAR
Desde VARCHAR
puede tener 65k bytes ahora, cuando el entonces debería TEXT
ser utilizados en lugar de VARCHAR
?
Duplicar posibles:
MySQL: Large VARCHAR vs. TEXT?para usar texto en mysql en lugar de VARCHAR
Desde VARCHAR
puede tener 65k bytes ahora, cuando el entonces debería TEXT
ser utilizados en lugar de VARCHAR
?
Un largo VARCHAR
se almacena de la misma manera que un campo TEXT
/BLOB
en InnoDB
.
De almacenamiento BLOB prospectivo, TEXTO como así como con VARCHAR se manejan misma manera por InnoDB. Esta es la razón por la cual el manual de Innodb lo llama "columnas largas" en lugar de BLOBs en lugar de .
A menos que necesite índice de estas columnas (en cuyo caso VARCHAR
es mucho más rápido) no hay razón para usar VARCHAR
sobre TEXT
para los campos largos - hay algunas optimizaciones específicas del motor en MySQL
para sintonizar la recuperación de datos según la longitud, y debe usar el tipo de columna correcto para aprovecharlos.
En caso de que esté usando MyISAM
, una discusión en profundidad sobre el tema es here.
TEXT
y BLOB
se almacenan fuera de la mesa con la tabla de sólo tener un puntero a la ubicación del almacenamiento real.
VARCHAR
se almacena en línea con la tabla. VARCHAR
es más rápido cuando el tamaño es razonable.
Según this test, VARCHAR
es aproximadamente tres veces más rápido que el texto.
Defina "campo largo". –
@PaulBrewczynski> 768 bytes (ver el enlace Lion publicado) – delrox
Una corrección para InnoDB: TEXT y BLOB se almacenan fuera de la tabla en InnoDB solo si son "largos" (> 768 bytes), y solo la cola se almacena fuera de la tabla (similar a VARCHAR). La diferencia real es que las longitudes máximas son diferentes, y con VARCHAR debe proporcionar una longitud máxima (se aplica junto con el límite del sistema de 65k). – delrox
El texto debe usarse para cadenas muy largas de longitud indeterminada. Además, las consultas que devuelven campos TEXT tienden a ser mucho más lentas que sus contrapartes VARCHAR.
En mi base de datos, tengo una columna llamada Descripción. ¿Debe el tipo de datos ser VARCHAR o TEXTO? No estoy seguro de cuánto tiempo van a ser los datos de la descripción, pero estoy planeando poner un límite de conteo de palabras en la parte frontal para que tenga una longitud máxima. – codeinprogress
Cuando necesite más de 65k caracteres. :) – GordonM
Eso debería ser 65k * bytes *, no caracteres, creo que – davek
Oh, sí. 65k bytes. Actualizado mi pregunta. – enchance