MySQL8.0+排序规则讨论

2023-05-12 17:41:48 +08:00
 Hankey

对于 mysql8.0+,大家在生产环境用的是什么排序规则? 比如 utf8mb4_0900_ai_ciutf8mb4_general_ciutf8mb4_bin还是其它的排序规则?有什么使用经验?

3852 次点击
所在节点    MySQL
13 条回复
Oktfolio
2023-05-12 17:56:16 +08:00
utf8mb4_0900_ai_ci
brader
2023-05-12 17:56:25 +08:00
不管 5 还是 8 ,我习惯是使用 utf8mb4_general_ci ,而且你也不要分什么生产环境,这玩意就要统一,你生产一个样,开发环境一个样,是给自己埋坑吗
yifei2
2023-05-12 17:59:28 +08:00
utf8mb4_general_ci
xuanbg
2023-05-12 19:21:40 +08:00
utf8mb4_general_ci
wooke
2023-05-12 22:32:21 +08:00
utf8mb4_general_ci
546L5LiK6ZOt
2023-05-12 23:01:45 +08:00
为啥大家都用大小写不敏感的
fuchish112
2023-05-12 23:06:29 +08:00
utf8mb4_unicode_ci
flyv2x
2023-05-13 00:02:03 +08:00
utf8mb4_0900_ai_ci 是 MySQL 8.0.1 及以后版本的默认排序规则,它是基于 Unicode 9.0.0 的。它比 utf8mb4_general_ci 更准确,比 utf8mb4_bin 更快。

以下是几种常用排序规则的特性:

utf8mb4_0900_ai_ci:这是基于 Unicode 9.0.0 的排序规则。它进行的是不区分大小写的字符比较,不区分重音。这是 MySQL 8.0 的默认排序规则,它比旧版本的排序规则更快,更准确。

utf8mb4_general_ci:这是基于 Unicode 3.0 的排序规则。它进行的是不区分大小写的字符比较,不区分重音。然而,由于它是基于较早的 Unicode 版本,所以在某些情况下,它可能会产生不准确的结果。

utf8mb4_bin:这是二进制排序规则。它进行的是区分大小写的比较,也不考虑重音和其他字符特性。它的主要优点是速度快,但在某些情况下,它可能不会产生期望的结果,特别是在进行字符串比较时。

使用哪种排序规则取决于你的特定需求。如果你需要进行快速的二进制比较,那么 utf8mb4_bin 可能是最好的选择。如果你需要进行基于最新 Unicode 版本的比较,那么 utf8mb4_0900_ai_ci 可能是最好的选择。然而,如果你的应用程序需要兼容旧版本的 MySQL 或者其他数据库,那么 utf8mb4_general_ci 可能是更好的选择。

但是,总的来说,对于大多数情况,utf8mb4_0900_ai_ci 应该是最好的选择,因为它提供了最准确和最快的结果。
Hellert
2023-05-13 00:32:14 +08:00
还有一个小区别,utf8mb4_general_ci 比较时会忽略尾部空格,utf8mb4_0900_ai_ci 不会。
liuxu
2023-05-13 02:26:22 +08:00
utf8mb4_unicode_ci
realpg
2023-05-13 10:16:16 +08:00
@546L5LiK6ZOt #6
你永远不知大傻子用户的用户名用的什么奇怪大小写
tuine
2023-05-13 10:24:55 +08:00
utf8mb4_zh_0900_as_cs
leorealman
2023-05-16 10:09:33 +08:00
保持和 5.7 一致,我们用的 utf8mb4_general_ci

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/939582

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX