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

2024-03-1410:39:39数据库教程Comments295 views字数 882阅读模式

MySQL如何选择utf8mb4_general_ci和utf8mb4_0900_ai_ci字符集排序规则文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/62208.html

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

排序准确性

utf8mb4_general_ci:这个排序规则并没有完全实现 Unicode 的排序规则。因此,在处理某些特殊语言或字符集时,排序结果可能会出现不一致的情况。然而,在大多数情况下,这种不一致性可能并不会对结果产生显著影响,因为许多特殊字符的顺序并不需要非常精确。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/62208.html

utf8mb4_0900_ai_ci:这个排序规则是基于 Unicode 9.0 的规范,并且具有“不区分音调”(accent insensitivity)和“不区分大小写”(case insensitivity)的特性。这意味着它能够更准确地处理各种语言之间的排序问题,包括那些涉及特殊字符和音调的语言。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/62208.html

性能

utf8mb4_general_ci:由于它没有实现复杂的 Unicode 排序规则,因此在比较和排序时通常更快。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/62208.html

utf8mb4_0900_ai_ci:为了实现更准确的排序,它可能使用了稍微复杂的排序算法。然而,在大多数情况下,这种性能差异可能并不明显。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/62208.html

简单总结

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

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

作者:张子凡文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/62208.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/sjk/62208.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定