MySQL字符集排序规则对比:utf8mb4版本差异

utf8mb4_0900_as_cs 和 utf8mb4_bin 之间对比

utf8mb4_0900_as_cs 和 utf8mb4_bin 的对比

这两种 MySQL 字符集排序规则在功能和特性上有一些重要区别:

utf8mb4_0900_as_cs

  • 基于 Unicode 9.0.0 标准(较新)
  • 区分大小写(case-sensitive,"cs"表示)
  • 提供更精确的语言感知排序
  • MySQL 8.0 及以上版本引入
  • 性能优化更好
  • 支持补充字符(包括表情符号)
  • 在排序时考虑语言特定规则

utf8mb4_bin

  • 较老的排序规则
  • 区分大小写
  • 基于二进制比较(按照字符的二进制编码排序)
  • 在所有 MySQL 版本中可用
  • 简单直接的比较方式
  • 不考虑语言特定的排序规则

主要差异

  1. 排序行为:utf8mb4_0900_as_cs 按照 Unicode 规则排序,更符合人类语言习惯;utf8mb4_bin 纯粹按二进制值排序
  2. 版本兼容性:utf8mb4_0900_as_cs 需要 MySQL 8.0+,而 utf8mb4_bin 适用于所有版本
  3. 性能:utf8mb4_0900_as_cs 在 MySQL 8.0+ 中可能有更好的性能优化
  4. 语言感知:utf8mb4_0900_as_cs 更了解各种语言的特性

选择建议

  • 如果使用 MySQL 8.0 以上版本并需要语言感知排序,选择 utf8mb4_0900_as_cs
  • 如果需要跨版本兼容性或纯粹的二进制比较,选择 utf8mb4_bin
  • 两者都区分大小写,但排序逻辑不同

在现代应用中,如果没有特殊兼容性要求,utf8mb4_0900_as_cs 通常是更好的选择。

utf8mb4_0900_as_cs

虽然 utf8mb4_0900_as_cs 这个字符集的版本更好,但在 Ubuntu 24.04 的版本中没有安装最新的 MariaDB 11 版本。

所以这个字符集没有办法在默认的 Ubuntu 24.04 安装数据库上使用。