【MySQL系列】深入理解MySQL中的存储、排序字符集-三、附录

3.1 utf8mb4_unicode_ci 和 utf8mb4_general_ci 的区别

  • 准确性

    排序字符集 说明
    utf8mb4_unicode_ci 是基于标准的 Unicode 来排序和比较,能够在各种语言之间精确排序。
    utf8mb4_general_ci 没有实现 Unicode 排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。

    注意:在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。

  • 性能

    排序字符集 说明
    utf8mb4_general_ci 在比较和排序的时候更快。
    utf8mb4_unicode_ci 在特殊情况下,Unicode 排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。

    注意:在绝大多数情况下,不会发生此类复杂比较。

3.2 实践建议

在开发时,个人建议:

  • 尽可能使用 utf8mb4 字符集,以确保能够支持完整的 Unicode 字符集。
  • 根据具体需求选择合适的排序规则,大多数情况下可以使用 utf8mb4_general_ci
  • 在创建表和列时就指定字符集和排序规则,避免以后出现编码问题。
  • 如果需要存储大小写或重音符号敏感的数据,使用 utf8mb4_bin 排序规则。
  • 对于加密数据或需要按二进制方式比较的场景,也应该使用 utf8mb4_bin
上一篇:排序算法——快速排序


下一篇:2.5D视觉——Aruco码定位检测