首页 > 解决方案 > MySQL 的最佳通用字符集和排序规则

问题描述

目前,每当我创建一个新的 MySQL 数据库时,我使用 utf8mb4 作为字符集,使用 utf8mb4_unicode_520_ci 作为排序规则,例如:

CREATE DATABASE IF NOT EXISTS db_name
    DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;

MySQL 是否有更新/升级的通用排序规则或字符集?

例如,如果有一个排序规则取代了 utf8mb4_unicode_520_ci,比如 utf8mb4_unicode_800_ci 或类似的东西?

谢谢你的帮助。

标签: mysql

解决方案


您可以了解当前 MySQL 实例支持哪些排序规则。这是我的 MySQL 5.7 实例的输出:

mysql> select * from information_schema.collations where character_set_name='utf8mb4';
+------------------------+--------------------+-----+------------+-------------+---------+
| COLLATION_NAME         | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN |
+------------------------+--------------------+-----+------------+-------------+---------+
| utf8mb4_general_ci     | utf8mb4            |  45 | Yes        | Yes         |       1 |
| utf8mb4_bin            | utf8mb4            |  46 |            | Yes         |       1 |
| utf8mb4_unicode_ci     | utf8mb4            | 224 |            | Yes         |       8 |
| utf8mb4_unicode_520_ci | utf8mb4            | 246 |            | Yes         |       8 |
...

还有一堆国家校对。

MySQL 8.0 中有更新的 UCA 9.0.0 标准的新排序规则:

| utf8mb4_0900_ai_ci         | utf8mb4            | 255 | Yes        | Yes         |       0 | NO PAD        |
| utf8mb4_0900_as_ci         | utf8mb4            | 305 |            | Yes         |       0 | NO PAD        |
| utf8mb4_0900_bin           | utf8mb4            | 309 |            | Yes         |       1 | NO PAD        |

和更多的国家校对。

这里有关于新排序规则的非常好的文档:https ://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html


推荐阅读