¿Es un blob más eficiente que un varchar para datos que pueden ser de CUALQUIER tamaño?

9

Al configurar una base de datos, quiero usar el tipo de datos más eficiente para datos potencialmente bastante largos. Actualmente mi proyecto es almacenar títulos de canciones y pensamientos relacionados con esa canción. Algunos títulos pueden tener 5 caracteres o más de 100 caracteres y los pensamientos pueden durar bastante.

¿Es más eficiente usar un conjunto varchar a 8000 o usar un blob? ¿Usar un blob es lo mismo que un varchar, ya que hay un tamaño establecido que se asigna independientemente de lo que contiene? o es solo un puntero y realmente no usa mucho espacio en la mesa? ¿Hay un determinado tamaño de conjunto de un blob en KB o es expandible?

BillyNair
fuente

Respuestas:

12

Sugeriría usar TEXTO sobre BLOB.

Diferencia primaria

  • TEXT and BLOB se almacena fuera de la tabla con la tabla que solo tiene un puntero a la ubicación del almacenamiento real.

  • VARCHAR se almacena en línea con la tabla.

Directriz primaria

  1. Los mensajes de formato de texto casi siempre deben almacenarse como TEXTO (terminan siendo arbitrariamente largos)

  2. Los atributos de cadena deben almacenarse como VARCHAR (el nombre de usuario de destino, el asunto, etc.).


Para elegir cuándo usar VARCHAR y cuándo usar TEXTO se ha discutido ampliamente sobre el desbordamiento de la pila en estos hilos:

  1. MySQL: ¿VARCHAR grande vs. TEXTO?

  2. MySQL varchar (2000) vs texto?

También hay un hilo de comparación de rendimiento para esto en el foro MySQL.

Ozair Kafray
fuente
Gracias por esos enlaces. Respondieron algunas de las preguntas que tenía, y terminé usando un TEXTO. No era exactamente lo que estaba buscando en cuanto al espacio físico que ocupa en el servidor, pero supongo que siempre y cuando sea un proyecto pequeño, no importa. Más tarde, si empiezo a hacer proyectos más grandes, tendré que averiguarlo.
BillyNair 01 de
0

Creo que debería usar blob solo si tiene un tipo de datos complejo serializado, es decir, si desea almacenar en una sola tabla una clase compleja. Si solo desea almacenar una Cadena (o algo equivalente) no use blob.

m3th0dman
fuente