type json_object json_extract functions from example data column array mysql text blob mysql-json

json_object - ¿Debo usar blob o texto para JSON en MySQL?



mysql json functions (2)

Estoy planeando almacenar una cadena json_encoded en mi base de datos. No puedo precisar exactamente cuánto tiempo va a ser, pero estoy bastante seguro de que será largo. Mi preocupación es qué tipo de campo voy a usar para esto, ¿es blob o text ?

Prefiero el que puedo ahorrar tanto como sea posible en la búsqueda rápida; en cualquier caso, tengo otra columna donde debería indexar.


Como se indica en la documentación de MySQL , desde 5.7.8 se admite un tipo de datos JSON nativo.

El tipo de datos JSON proporciona estas ventajas sobre el almacenamiento de cadenas de formato JSON en una columna de cadena:

  • Validación automática de documentos JSON almacenados en columnas JSON. Los documentos no válidos producen un error.
  • Formato de almacenamiento optimizado. Los documentos JSON almacenados en columnas JSON se convierten a un formato interno que permite un acceso de lectura rápido a los elementos del documento. Cuando el servidor más tarde debe leer un valor JSON almacenado en este formato binario, no es necesario analizar el valor desde una representación de texto. El formato binario está estructurado para permitir que el servidor busque subobjetos o valores anidados directamente por clave o índice de matriz sin leer todos los valores antes o después de ellos en el documento.

Entonces, como dice la documentación de MySQL, se debe usar el tipo de datos JSON y no el texto.


blob es generalmente para cosas como imágenes, binarios, etc. el text debería ser lo suficientemente bueno para su caso, o puede usar longtext que tiene una capacidad de espacio aún mayor si eso es realmente una preocupación.

En lo que json_encode la búsqueda, ya que está almacenando las cosas de json_encode , igual tendrá que llamar a json_decode para que sea útil en su aplicación, no creo que la elección del tipo de datos importe en este caso.

Una forma mejor es normalizar el diseño de su base de datos en lugar de almacenar cosas relacionadas en una gran cadena de json.