2010-08-24 24 views
11

Quería crear una base de datos de notas personales, para almacenar notas en HTML o texto que son bastante largas. ¿Cuál sería la diferencia entre los campos VARCHAR y TEXT, cuál de ellos sería más eficiente de usar?MySQL: ¿tipo de datos más eficiente para almacenar notas largas?

Creo que el máximo de VARCHAR es 65535 caracteres, aunque no puedo entender si contendré algo más grande. Me pregunto si un determinado tipo de datos se puede comprimir automáticamente, aunque no creo que sea tan simple (ya que llevaría demasiado tiempo de CPU en uso real).

Respuesta

10

Si no está seguro si el texto siempre será más corta de 65535 caracteres a continuación, no se arriesgue a use varchar. Creo que definitivamente debería usar mediumtext o incluso longtext, pero para aumentar el rendimiento, colóquelos en una tabla separada. Por ejemplo, cree la tabla Notes que contendrá identificador de nota, título, fecha de creación y usuario que la crea y también la tabla NotesText que se asociará con Notes, pero contendrá solo el ID de la nota y su columna de texto. Esto evitará que se soliciten columnas de tipo texto y que se recuperen de la base de datos cuando realmente no las necesite.

+0

He encontrado que esta es la respuesta más relevante. Tengo muchas ganas de ponerlo en otra mesa solo para practicar la eficiencia. Muchas gracias. – John

+0

Gracias por aceptar;) ¡Buena suerte con su proyecto! –

+0

Esto es INCORRECTO. El texto en Mysql está limitado a los mismos 65535 caracteres. – BarsMonster

2

TEXTO AFAIR se limita a 65 mil caracteres, MEDIUMTEXT es de 16 millones, y LONGTEXT es de 4 GB máximo :-)

+1

Y nada le limita de comprimir y descomprimir datos (4 ejemplo, a través de gzip) antes de guardarlo. En este caso, tendrías que usar tipos BLOB. – BarsMonster

+0

Def. pensaría en hacer esto, pero sería molesto no poder ver el texto y usarlo en las consultas y todo eso, definitivamente comprimiría un archivo de 4MB +, gracias. – John

2

La longitud máxima de VARCHAR no es 65535 bytes; la longitud máxima de la fila es esa cantidad de bytes, y la longitud máxima de VARCHAR dependerá de las otras columnas que tenga en la tabla. Por esa razón, si es probable que necesite tantos caracteres, necesitará una columna TEXTO o BLOB. Estos se guardan por separado en el disco, por lo que tienden a ser más lentos (no en uso de CPU sino en tiempo total).

Cuestiones relacionadas