Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JSON_STORAGE_SIZE() – Encontre o tamanho de armazenamento de um documento JSON no MySQL


No MySQL, o JSON_STORAGE_SIZE() A função retorna o número de bytes usados ​​para armazenar a representação binária de um documento JSON.

Você fornece o documento JSON como um argumento.

Quando o argumento é um JSON column, essa função retorna o espaço usado para armazenar o documento JSON conforme foi inserido na coluna, antes de qualquer atualização parcial que possa ter sido realizada posteriormente.

Quando o argumento é uma string, a função retorna a quantidade de espaço de armazenamento na representação binária JSON que é criada analisando a string como JSON e convertendo-a em binário.


Sintaxe


A sintaxe fica assim:
JSON_STORAGE_SIZE(json_val)

Onde json_val é o documento JSON para o qual retornar o tamanho do armazenamento. Este deve ser um documento JSON válido ou uma string que possa ser analisada como uma.

Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;

Resultado:
+--------+
| Result |
+--------+
|     13 |
+--------+

Nesse caso, o tamanho do documento é de 13 bytes.

Aqui está um documento JSON um pouco maior.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;

Resultado:
+--------+
| Result |
+--------+
|     29 |
+--------+

Então este é de 29 bytes.

E aqui está um maior novamente.
SET @data = '{
  "Person": {
    "Age": 10,
    "Name": "Bart",
    "Friends": [
      "Bart",
      "Milhouse"
    ]
  }
}';
SELECT JSON_STORAGE_SIZE(@data) Result;

Resultado:
+--------+
| Result |
+--------+
|     86 |
+--------+

Exemplo 2 – Colunas do banco de dados


Aqui está um exemplo de como obter o tamanho de armazenamento de um documento JSON armazenado em uma coluna de banco de dados.
USE Music;
SELECT JSON_STORAGE_SIZE(Contents) Size
FROM Collections
WHERE CollectionId = 1;

Resultado:
+------+
| Size |
+------+
|  503 |
+------+

Nesse caso, a coluna do banco de dados era uma coluna JSON e contém os dados a seguir.
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"
  }
]

Neste caso, usei o JSON_PRETTY() função para tornar os resultados mais legíveis.