sql >> Base de Datos >  >> RDS >> Mysql

JSON_STORAGE_SIZE():encuentre el tamaño de almacenamiento de un documento JSON en MySQL

En MySQL, el JSON_STORAGE_SIZE() La función devuelve el número de bytes utilizados para almacenar la representación binaria de un documento JSON.

Proporcionas el documento JSON como argumento.

Cuando el argumento es JSON columna, esta función devuelve el espacio utilizado para almacenar el documento JSON tal como se insertó en la columna, antes de cualquier actualización parcial que se haya realizado posteriormente.

Cuando el argumento es una cadena, la función devuelve la cantidad de espacio de almacenamiento en la representación binaria JSON que se crea analizando la cadena como JSON y convirtiéndola en binaria.

Sintaxis

La sintaxis es así:

JSON_STORAGE_SIZE(json_val)

Donde json_val es el documento JSON para el que se devolverá el tamaño de almacenamiento. Debe ser un documento JSON válido o una cadena que se pueda analizar como tal.

Ejemplo 1:uso básico

Aquí hay un ejemplo para demostrarlo.

SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;

Resultado:

+--------+
| Result |
+--------+
|     13 |
+--------+

En este caso, el tamaño del documento es de 13 bytes.

Aquí hay un documento JSON un poco más grande.

SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;

Resultado:

+--------+
| Result |
+--------+
|     29 |
+--------+

Así que este tiene 29 bytes.

Y aquí hay uno más grande otra vez.

SET @data = '{
  "Person": {
    "Age": 10,
    "Name": "Bart",
    "Friends": [
      "Bart",
      "Milhouse"
    ]
  }
}';
SELECT JSON_STORAGE_SIZE(@data) Result;

Resultado:

+--------+
| Result |
+--------+
|     86 |
+--------+

Ejemplo 2:columnas de la base de datos

Este es un ejemplo de cómo obtener el tamaño de almacenamiento de un documento JSON que está almacenado en una columna de base de datos.

USE Music;
SELECT JSON_STORAGE_SIZE(Contents) Size
FROM Collections
WHERE CollectionId = 1;

Resultado:

+------+
| Size |
+------+
|  503 |
+------+

En este caso, la columna de la base de datos era una columna JSON y contiene los siguientes datos.

USE Music;
SELECT JSON_PRETTY(Contents) Contents
FROM Collections
WHERE CollectionId = 1;

Resultado:

[
  {
    "Albums": [
      {
        "AlbumName": "Powerage"
      }
    ],
    "ArtistName": "AC/DC"
  },
  {
    "Albums": [
      {
        "AlbumName": "Ziltoid the Omniscient"
      },
      {
        "AlbumName": "Casualties of Cool"
      },
      {
        "AlbumName": "Epicloud"
      }
    ],
    "ArtistName": "Devin Townsend"
  },
  {
    "Albums": [
      {
        "AlbumName": "Powerslave"
      },
      {
        "AlbumName": "Somewhere in Time"
      },
      {
        "AlbumName": "Piece of Mind"
      },
      {
        "AlbumName": "Killers"
      },
      {
        "AlbumName": "No Prayer for the Dying"
      }
    ],
    "ArtistName": "Iron Maiden"
  }
]

En este caso, utilicé JSON_PRETTY() para que los resultados sean más legibles.