MySQL如何选择utf8mb4_general_ci和utf8mb4_0900_ai_ci字符集排序规则

2024年 3月 14日 73.5k 0

MySQL如何选择utf8mb4_general_ci和utf8mb4_0900_ai_ci字符集排序规则

正式生产环境本着稳定高于一切的宗旨,所以也就不太可能做到数据库方面的升级保持,在 MySQL 8.0 版本之前 utf8mb4_general_ci 是默认的排序规则。而在从 MySQL 8.0 开始,默认排序规则已经更改为 utf8mb4_0900_ai_ci。既然 MySQL 默认都变更了,这也就意味着新项目的开发中理论上也应该如此的应用,所以下面就和子凡我来知其所以然。

排序准确性

utf8mb4_general_ci:这个排序规则并没有完全实现 Unicode 的排序规则。因此,在处理某些特殊语言或字符集时,排序结果可能会出现不一致的情况。然而,在大多数情况下,这种不一致性可能并不会对结果产生显著影响,因为许多特殊字符的顺序并不需要非常精确。

utf8mb4_0900_ai_ci:这个排序规则是基于 Unicode 9.0 的规范,并且具有“不区分音调”(accent insensitivity)和“不区分大小写”(case insensitivity)的特性。这意味着它能够更准确地处理各种语言之间的排序问题,包括那些涉及特殊字符和音调的语言。

性能

utf8mb4_general_ci:由于它没有实现复杂的 Unicode 排序规则,因此在比较和排序时通常更快。

utf8mb4_0900_ai_ci:为了实现更准确的排序,它可能使用了稍微复杂的排序算法。然而,在大多数情况下,这种性能差异可能并不明显。

简单总结

utf8mb4_0900_ai_ci 提供了更准确的排序功能,特别是在处理涉及多种语言和特殊字符集的情况时。如果性能是一个关键因素,并且不需要非常精确的排序结果,那么 utf8mb4_general_ci 可能是一个更好的选择。所以在选择适当的排序规则时,还是需要根据具体需求和数据库环境进行权衡。

当然其实既然都用上 MySQL 8.x 版本了,本身从性能上来说就会比 MySQL 5.7 及之前的老版本有较大的性能提升,单从使用需求上来说,只要涉及到检索肯定还是希望有更精准的排序结果,不然搜索的意义又在哪里呢?所以子凡我个人更倾向于使用和推荐 utf8mb4_0900_ai_ci。

作者:张子凡

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论