在 MariaDB 中,类型
JSON
是 LONGTEXT COLLATE utf8mb4_bin
的别名。
当我将包含
JSON
列的表格的排序规则更改为 utf8mb4_unicode_520_ci
via
ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
这也会改变 JSON 列的排序规则吗?
如果是这样:这会对所述 JSON 列的可用性造成问题吗?
这也会改变 JSON 列的排序规则吗?
是的,会的。
如果是这样:这会对所述 JSON 列的可用性造成问题吗?
我能想到的一些问题:
排序规则更改本身不会影响 JSON 数据是否保持有效,但会影响 JSON 查询中字符串比较的工作方式。排序规则更改后,依赖于区分大小写或二进制比较的查询可能会产生不同的结果。
使用utf8mb4_unicode_520_ci,比较变得不区分大小写,这可能与utf8mb4_bin的行为不同,其中比较区分大小写。
使用 utf8mb4_unicode_520_ci 可能会影响性能,特别是对于带有字符串操作的复杂查询。
我的建议。
将 json 列恢复为
LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
ALTER TABLE myTable
MODIFY COLUMN json_data LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;