MySQL JSON_STORAGE_SIZE() 函数使用指南
MySQL JSON_STORAGE_SIZE()
函数返回存储一个 JSON 文档的二进制表示所占用的字节数。
JSON_STORAGE_SIZE()
语法
这里是 MySQL JSON_STORAGE_SIZE()
的语法:
JSON_STORAGE_SIZE(json)
参数
json
- 必需的。一个 JSON 文档。它可以是一个 JSON 字符串,或者一个 JSON 列。
返回值
MySQL JSON_STORAGE_SIZE()
函数返回存储一个 JSON 文档的二进制表示所占用的字节数。它可以接受一个 JSON 字符串,或者一个 JSON 列作为参数。
如果参数是一个 JSON 字符串,JSON_STORAGE_SIZE()
函数返回由 JSON 字符串解析成的 JSON 类型的值存储时所占用的字节数。
如果参数是一个 JSON 列,JSON_STORAGE_SIZE()
函数返回插入到列中的 JSON 文档所占用的存储空间。当然,这个数字可能随着以后更新而变化。
如果参数为 NULL
, JSON_STORAGE_SIZE()
函数返回 NULL
。
如果参数 json
不是有效的 JSON 文档,MySQL 将会给出错误。您可以使用 JSON_VALID()
验证 JSON 文档的有效性。
JSON_STORAGE_SIZE()
示例
示例: 数字
SELECT
'Size' AS `Json`,
JSON_STORAGE_SIZE('0') AS `0`,
JSON_STORAGE_SIZE('1') AS `1`,
JSON_STORAGE_SIZE('1000') AS `1000`,
JSON_STORAGE_SIZE('100000') AS `100000`;
+------+---+---+------+--------+
| Valu | 0 | 1 | 1000 | 100000 |
+------+---+---+------+--------+
| Size | 3 | 3 | 3 | 5 |
+------+---+---+------+--------+
示例: 字符串
SELECT
'Size' AS `Json`,
JSON_STORAGE_SIZE('"a"') AS `a`,
JSON_STORAGE_SIZE('"Hello World"') AS `Hello World`;
+------+---+-------------+
| Json | a | Hello World |
+------+---+-------------+
| Size | 3 | 13 |
+------+---+-------------+
示例: 布尔值
SELECT
'Size' AS `Json`,
JSON_STORAGE_SIZE('true') AS `true`,
JSON_STORAGE_SIZE('false') AS `false`;
+------+------+-------+
| Json | true | false |
+------+------+-------+
| Size | 2 | 2 |
+------+------+-------+
从结果我们看出,存储 JSON 布尔值 true
或者 false
占用 2 个字节。
示例: null
SELECT
'Size' AS `Json`,
JSON_STORAGE_SIZE('null') AS `null`;
+------+------+
| Json | null |
+------+------+
| Size | 2 |
+------+------+
从结果我们看出,存储 JSON null
值占用 2 个字节。
示例: 数组和对象
SELECT
'Size' AS `Json`,
JSON_STORAGE_SIZE('[1, 2]') AS `[1, 2]`,
JSON_STORAGE_SIZE('[1, 2, 3]') AS `[1, 2, 3]`,
JSON_STORAGE_SIZE('{"x": 1}') AS `{"x": 1}`,
JSON_STORAGE_SIZE('{"x": 1, "y": 2}') AS `{"x": 1, "y": 2}`;
+------+--------+-----------+----------+------------------+
| Json | [1, 2] | [1, 2, 3] | {"x": 1} | {"x": 1, "y": 2} |
+------+--------+-----------+----------+------------------+
| Size | 11 | 14 | 13 | 21 |
+------+--------+-----------+----------+------------------+
示例:字段
本示例说明了如何使用 JSON_STORAGE_SIZE()
函数计算一个 JSON 列占用的空间。
首先,让我们先创建一个表 test_json_storage_size
:
DROP TABLE IF EXISTS test_json_storage_size;
CREATE TABLE test_json_storage_size (
json_col JSON NOT NULL
);
然后,让我们插入 1 行数据以供测试使用:
INSERT INTO test_json_storage_size
VALUES ('{"x": 1, "y": 2}');
然后,让我们使用 JSON_STORAGE_SIZE()
函数查看 json_col
占用的存储空间:
SELECT
json_col,
JSON_STORAGE_SIZE(json_col)
FROM
test_json_storage_size;
+------------------+-----------------------------+
| json_col | JSON_STORAGE_SIZE(json_col) |
+------------------+-----------------------------+
| {"x": 1, "y": 2} | 21 |
+------------------+-----------------------------+
接着,让我们修改一下 JSON 列的值:
UPDATE test_json_storage_size
SET json_col = '{"x": 1, "y": 2, "z": 3}';
最后,让我们 JSON_STORAGE_SIZE()
函数查看 json_col
占用的存储空间:
SELECT
json_col,
JSON_STORAGE_SIZE(json_col)
FROM
test_json_storage_size;
+--------------------------+-----------------------------+
| json_col | JSON_STORAGE_SIZE(json_col) |
+--------------------------+-----------------------------+
| {"x": 1, "y": 2, "z": 3} | 29 |
+--------------------------+-----------------------------+
我们发现 JSON_STORAGE_SIZE()
返回值发生了变化,这是因为 JSON 字段的值已经发生了变化。