2012-07-11 24 views

Respuesta

57

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 .

source

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.

+8

Defina "campo largo". –

+3

@PaulBrewczynski> 768 bytes (ver el enlace Lion publicado) – delrox

+1

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

4

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.

+0

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

Cuestiones relacionadas