2010-11-08 22 views
9

Tenemos una tabla histórica muy grande que contiene una columna con un máximo de 500 caracteres UTF8, ¡y el espacio en disco crece realmente rápido!MySQL TEXT o VARCHAR

Estamos teniendo al menos 2 millones de filas al día ... y nos preguntábamos qué haría un mejor trabajo (sobre todo en el almacenamiento, pero en el rendimiento también)? TEXTO o VARCHAR (512)?

+1

http://www.pythian.com/news/7129/text-vs-varchar/ –

Respuesta

11

VARCHAR es probablemente preferible en su caso tanto desde el punto de vista del almacenamiento como del rendimiento. Ver esto oft-reposted article.

2

This es información útil; Creo que, en general, la respuesta es que la varchar suele ser la mejor apuesta.

1

Desde el manual de MySQL:

En la mayoría de los aspectos, se puede considerar una columna BLOB como una columna VARBINARY que puede ser tan grande como desee. Del mismo modo, puede considerar una columna TEXTO como una columna VARCHAR. BLOB y TEXTO difieren de VARBINARY y VARCHAR de las siguientes maneras:

There is no trailing-space removal for BLOB and TEXT columns when values 

se almacenan o recuperados. Antes de MySQL 5.0.3, esto difiere de VARBINARY y VARCHAR, para los cuales los espacios finales son eliminados cuando se almacenan los valores.

On comparisons, TEXT is space extended to fit the compared object, 

exactamente como CHAR y VARCHAR.

For indexes on BLOB and TEXT columns, you must specify an index 

longitud de prefijo. Para CHAR y VARCHAR, una longitud de prefijo es opcional. Consulte la Sección 7.5.1, "Índices de columna".

BLOB and TEXT columns cannot have DEFAULT values. 

http://dev.mysql.com/doc/refman/5.0/en/blob.html

Cuestiones relacionadas