Mysql
 sql >> Base de données >  >> RDS >> Mysql

JSON_STORAGE_SIZE() - Trouver la taille de stockage d'un document JSON dans MySQL

Dans MySQL, le JSON_STORAGE_SIZE() renvoie le nombre d'octets utilisés pour stocker la représentation binaire d'un document JSON.

Vous fournissez le document JSON comme argument.

Lorsque l'argument est un JSON colonne, cette fonction renvoie l'espace utilisé pour stocker le document JSON tel qu'il a été inséré dans la colonne, avant toute mise à jour partielle qui aurait pu être effectuée par la suite.

Lorsque l'argument est une chaîne, la fonction renvoie la quantité d'espace de stockage dans la représentation binaire JSON qui est créée en analysant la chaîne en tant que JSON et en la convertissant en binaire.

Syntaxe

La syntaxe ressemble à ceci :

JSON_STORAGE_SIZE(json_val)

json_val est le document JSON pour lequel renvoyer la taille de stockage. Il doit s'agir d'un document JSON valide ou d'une chaîne pouvant être analysée comme telle.

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer.

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

Résultat :

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

Dans ce cas, la taille du document est de 13 octets.

Voici un document JSON légèrement plus grand.

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

Résultat :

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

Donc celui-ci fait 29 octets.

Et en voici encore une plus grande.

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

Résultat :

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

Exemple 2 – Colonnes de la base de données

Voici un exemple d'obtention de la taille de stockage d'un document JSON stocké dans une colonne de base de données.

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

Résultat :

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

Dans ce cas, la colonne de la base de données était une colonne JSON et elle contient les données suivantes.

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

Résultat :

[
  {
    "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"
  }
]

Dans ce cas, j'ai utilisé le JSON_PRETTY() fonction pour rendre les résultats plus lisibles.