2011-01-14 11 views
7

Acabo de notar en la documentación que en versiones superiores a la 5.0.3 de MySQL puede declarar varchar's con valores mayores que 255. En el pasado he cambiado los tipos de datos por algo mayor que 255 pero me pregunto si es una mejor práctica ahora para definir valores de cadena más grandes usando varchar (1000) o cualquier longitud que sea apropiada.¿Es aconsejable declarar un VARCHAR con un valor superior a 255 en MySQL?

¿Es esto común con otras bases de datos también, o es mejor quedarse con 255 como el valor máximo y cambiar los tipos de datos por encima de eso?

+6

Puede que desee echarle un vistazo a esta pregunta: http://stackoverflow.com/questions/2023481/mysql-large-varchar-vs-text –

+0

Gracias. Lo suficientemente cerca de mi pregunta. – ahanson

Respuesta

4

Como sugiere @Eric, los VARCHAR se almacenan en la tabla mientras que los TEXTOS se almacenan en un archivo separado. El único punto importante que se debe tener en cuenta al diseñar una estructura de tabla es la limitación MySQL limita cada fila/registro a 65 KB).

Le sugiero que use VARCHARs para "frases únicas", cualquier cosa que tenga una entrada de texto como fuente de datos.

6

En mi opinión, no me gustaría acercarme. Cuando necesite más de 255 caracteres, use TEXT algunos más adecuados.

Actualización: VARCHAR ahora está limitado a 65535 bytes, pero una fila en MySQL no puede contener más de 65535 bytes.

Debe saber que VARCHAR y campos como ese se almacenan directamente en su base de datos cuando TEXTO, por ejemplo, se almacenará fuera de la fila por qué un puntero dentro de la fila que lo enlaza.

Así que si quiere usar VARCHAR grande, asegúrese de que no sean demasiado grandes y no interfieran con el resto de los datos en la fila.

Por ejemplo, tener varios campos VARCHAR que pueden contener hasta 65K caracteres sería una mala idea.

+2

¿Cuidar para explicar por qué? No es que estés equivocado, solo que sería una respuesta mucho mejor. – dkarp

+0

Actualicé mi impresora. –

5

La columna VARCHAR está limitada a 65.535 bytes, lo que no siempre significa 65.535 caracteres según el conjunto de caracteres que está utilizando.

Si utiliza el conjunto de caracteres latin1 que es un byte por carácter, no se encontrará con ningún problema porque la longitud de la cadena es igual a la cantidad de almacenamiento necesaria.

Si usa un conjunto de caracteres que almacena caracteres de varios bytes, solo puede establecer la longitud para que sea lo que permitirá el conjunto de caracteres. Por ejemplo, el juego de caracteres utf8 puede tener una longitud máxima de 21,844 caracteres.

Cuestiones relacionadas