MariaDB:更改包含 JSON 列的表的排序规则

问题描述 投票:0回答:1

在 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 列的可用性造成问题吗?

sql mariadb
1个回答
0
投票

这也会改变 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;

参见示例

© www.soinside.com 2019 - 2024. All rights reserved.